您的位置:首页 > 职场人生

黑马程序员--OC自学笔记---01OC简介、面向对象、类、方法

2015-12-28 21:27 525 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1. objective-c简称obj-c、OC

2. 动态绑定、动态检查、动态链接

3. 为什么用import来引入头文件(面试题

include和import都是引入头文件,import引入的头文件,可以防止重复包含。

Include它是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含问题。

4. Import和@class的区别(面试题)

5. Foundation/Foundation.h

1) 头文件

2)头文件的位置

Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h

3) 文件包含了其他的大量的头文件

4) 作用:把foundation.h引入了,等于把OC的库文件都引过来了

6. NSLog和printf的区别(面试题

1) NSLog会自动换行,printf不能自动换行

2) NSLog会自动输出时间等项目信息,printf不会输出调试信息

3) NSLog函数的参数是一个NSString对象,printf是一个字符串常量指针

7. NSLog格式化输出的问题

1) OC向下兼容C语言

2) NSLog也可以像printf那样进行格式化输出:NSLog(@”%.2f,%d%c”,2.0,1,’c’);

3) 但是输出字符串时不能使用%s,而是%@:NSLog(@”%@”,”abc”);

4) 不能使用printf来输出%@类型

5) NSString是OC特有的类型,C语言不支持

8. 类的前缀NS的含义

NS来自于NeXTStep的一个软件NeXT Software,OC中不支持命名空间(namespace),NS是为了避免命名冲突而给的前缀,看到NS前缀就知道是Cocoa中的系统类的名称。

9. OC中的注释和@符号的使用

1)@“” 表示将一个C的字符串转化为OC中的字符串对象NSString

2)@标识符 表示OC中的关键字,OC中大部分关键字都是以@开头的

3)OC中的注释:

①单行注释 //

②多行注释 /* */

③文档注释

/**

*

*

*/

10. OC和C语言的差异(1)

1) 文件的差异

① C语言中的文件后缀有.c .o .out .h

② OC中的文件后缀有.h-->头文件,包含方法,属性的声明

.m—>类的实现文件,参与编译的文件,用来实现类中声明的方法

2) 数据类型差异

① C语言数据类型



② OC中的数据类型





3) 关键字差异

① C语言的关键字



② OC中的关键字



③ 注意:C语言中的关键字都可以在OC源程序中使用

OC新增的关键字在使用时,注意部分关键字以“@”开头

4) 流程控制语句:OC中并没有增加新的流程控制,提供一种增强型的for循环(for in)

if---else switch while do---while for

5) OC中函数的定义和声明的差异

+(void)test;

-(void)test;

方法声明:

-(int)sum:(int)x andY:(int)y;

方法定义:

-(int)sum:(int)x andY:(int)y{

returnx+y;

}

11. OC和C的差异(2)

1) OC新增的数据类型

① Boolean取值为true(1)或false(0)

② BOOL取值为YES(1 )和NO(0)

2) 异常捕捉机制

try{

可能发生异常的代码;

}catch(异常的具体类型){

对异常的操作;

}

finally{

不管是否有异常,都会被执行的代码;

}

12. 面向对象编程概念

大幅度提高软件项目的成功率

减少维护费

提高可移植性和可靠性

特征:封装性、多态性、继承性

13. 类

1).h类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end。

注意:.h中的方法只是做一个声明,并不对方法进行实现。也就是说,只是说明一下方法名、方法的返回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。

2).m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation和@end。

14. 方法

1) 方法的声明和实现,都必须以+或者-开头

2) +表示类方法(静态方法)

3) -表示对象方法(动态方法)

4) 在.h中声明的所有方法的作用域都是public类型,不能更改。

15. 成员变量(实例变量\属性)

成员变量的常用作用域有3种:

1) @public全局都可以访问

2) @protected只能在类内部和子类中访问

3) @private只能在类内部访问

16. 类的定义

1) 类的声明(规定当前类的:类名、属性、行为)

@interface 类名:父类名

{

定义类的属性;

}

类的行为;

@end

举例:

@interface Car:NSObject
{
//类的属性
intlunzi;
intspeed;
NSString*color;
}


//类的行为

-(void)run;

@end

2) 类的实现(实现具体行为)

@implementation 类名

//行为的具体实现

@end

举例:

@implementation Car
-(void)run
{
NSLog(@”running!”);
}
@end


3)

17. 创建对象并访问成员变量

1) [Car new];

① 向计算机申请内存空间

② 给类中的每一个成员变量初始化值

③ 返回新申请的空间的首地址

Car *p = [Car new];

① 定义了一个Car类型的指针变量,指针变量指向新申请的内存空间

② 用Car类实例化了一个实例对象,对象的名称是p

18. 无参方法的调用

[类名或对象名 方法名]

Car *car = [Car new];

[car run];

关于对象方法:

1) 对象方法以-开头如-(void)xx;

2) 对象方法只能由对象来调用

3) 对象方法中可以访问当前对象的成员变量

4) 调用格式[对象名 对象方法名];

关于类方法

1) 类方法以+开头,如+(void)put;

2) 类方法只能由类来调用

3) 类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成员变量

4) 调用格式:[类名 类方法名];

19. 有参方法的声明和调用

1) 声明:

-(返回值类型)方法名:(参数1类型)参数1名称 and:(参数2类型)参数2名称…;

-int(sum):(int)x and:(int)y;

方法名为:sum: and: (冒号为方法名的一部分)

2) 实例变量书写规范

int _num; 数据类型 _实例变量名;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: