@property和点语法

 

声明了@property(或者setter、getter),才能使用点语法

 

@property (nonatomic, assign) int age;//等同于声明setter、getter方法

@synthesize age;  //等同于实现setter、getter方法

(6.0以后写了@property会自动生成@synthesize)

 

/————————————————————————————————/

  @property的参数

/————————————————————————————————/

(assign , retain , copy , readonly , readwrite , atomic , nonatomic等)

 

参数一 (缺省 atomic)

atomic 原子操作,多线程加锁 同一时间只能允许一个线程访问该属性(缺省参数,耗费系统资源)
nonatomic 非原子操作,不加锁,提高效率(不使用多线程的时候用这个)
        ————atomic是Objc使用的一种线程保护技术,是防止在写未完成的时候被另外一个线程读取,造成数据错误。

 

参数二(缺省 readwrite):

readonly 只读,只能调用getter方法不能调用setter方法

readwrite(缺省参数)可读可写

 

参数三(重点):

ARC(Automatic Reference Counting)自动管理内存,非ARC手动管理内存


 

c类型(基础数据类型) int long float double char NSInteger CGFloat…id

oc类型 NSString NSData NSArray NSDictionary …

 

copy与retain的区别
retain 是指针拷贝,copy 是内容拷贝。

————————————————————————————————————

 

weak与strong是由ARC新引入的对象变量属性

xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支持ARC的。xcode 4.3(ios5和以上版本)之后就有了ARC,并且开始使用

————————————————————————————————————

点语法书写格式

@interface T : NSObject {

NSString * _name;

}

-(void)setName:(NSString *)name;

-(NSString *)name;

(上两句等同于@property (nonatomic, assign) name;)

 

/*

 点语法(相当于setter、getter,左值setter,右值getter) 

*/

调用点语法函数

student.name = @"Joe";    //student.name是调用setAge方法的简写

NSLog(@"My name is %@", student.name);  //调用age方法(getter方法)的简写

 

posted @ 2014-03-19 13:30  进击的黑白熊  阅读(130)  评论(0编辑  收藏  举报