1、#import
#import <> 从system目录中查找头文件,不会检查当前目录。
#import "" 首先在当前目录中查找,如果未找到,则在Xcode设置的预处理程序搜索路径中查找文件。
#import 指令可以防止头文件被重复包含
2、typedef:用于给一个类型定义新名称 或 简化较为复杂的类型声明
3、#define:用于宏定义预处理
4、定义类
.h 用于定义类的头文件
@interface
类 : 父类
@end
.m Object C中的类文件
@implementation 类
@end
5、类方法定义
-(返回值类型) 函数名: (类型) value 参数名: (类型) value ….
-(int) speak:(int) a andName:(NSString*) address;
必须使用类的实例来调用
6、全局方法定义
+(返回值类型) 函数名: (类型) value 参数名: (类型) value ….
+(int) speak:(int) a andName:(NSString*) address;
```
直接使用类调用,不需要实例,相当于静态方法,和类方法不同之处在于 "+" 和 "-" 的区别
7、**super**:用于子类调用父类方法,在重载的时候用的比较多
8、**@selector **:获取方法的编号,相当于获取函数指针,
```SEL sel1=@selector(eat);```
9、 **@class**:用来告诉编译器这是一个类,编译器只需要通过指针来引用它即可,并不需要知道关于这个类的更多信息,可以用来减少编译。
10、**@protocol**:用于定义一个协议,相当于.NET中的接口interface
11、**@property**:用于定义类属性,比如
@property (nonatomic, retain) NSString name;
相当于实现get和set方法,写在类的.h文件中
12、**@synthesize**:用于实现在头文件中描述实现的类属性,一般和@property同时使用; 例如:@synthesize name; 这个写在类的*.m文件中
13、**id**:id是保存“指向对象的指针”的类型。声明为id的变量,可以保存指向任何Objective-C对象的一个指针
14、**retain**:通知编译器向分配给此属性的对象发送一个保留消息,这将确保属性底层的实例变量在使用过程中不会从内存中消失。释放旧对象,将就对象的值赋予新对象,在增加新对象的索引计数1 (在@property中使用)
15、**nonatomic**:不给set方法加锁,在多线程访问的时候会出现并发问题 (在@property中使用)
16、**assign**:简单的赋值,不更改索引的计数(在@property中使用)
17、 **copy**:建立一个索引计数为1的对象,然后释放旧对象(在@property中使用)
18、**readonly**:将只生成get方法而不生成set方法(在@property中使用)
19、**readwrite**:默认属性,将生成不带额外参数的get和set方法(在@property中使用)
20、**atomic**:相当于set方法加锁,当多线程访问的时候,只有当一个线程访问结束之后另外一个线程才能执行(在@property中使用)
网友评论