黑马程序员——OC语言加强---@property参数
2015-10-06 18:10
489 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
@property参数
@propertyxcode4.4前
@property帮我们生成get和set方法的声明
我们自己实现 get和set方法
或者
@property 和@synthesize联合
@propertyxcode 4.4后
@property增强
@propertyint age;
1)生成一个_age
2)生成get和set方法的声明
3)生成 get和set方法的实现
@property (......)int age;
@property 参数(一)
格式:@property (参数1,参数2) 数据类型 方法名
int _age;
@property (assign) int age;
-(void)setAge:(int)age{
_age = age;
}
Car_car;
@property (retain) Car *car ;
-(void)setCar:(int)car{
if(_car ! = car){
[_car release];
_car = [car retain]; }
}
1)内存管理相关参数
retain:对对象release旧值,retain新值(适用于OC对象类型)
assign:直接赋值(默认,适用于非oc对象类型)
copy:release旧值,copy新值
验证assign如果作用在对象上,实际上就是直接赋值
@property 参数(二)
1)是否要生成set方法(若为只读属性,则不生成)
readonly:只读,只会生成getter的声明和实现
readwrite:默认的,同时生成setter和getter的声明和实现
2)多线程管理(苹果在一定程度上屏蔽了多线程操作)
nonatomic:高性能,一般使用这个
atomic:低性能,默认
3)set和get方法的名称
修改set和get方法的名称,主要用于布尔类型。因为返回布尔类型的方法名一般以is开头,修改名称一般用在布尔类型中的getter。
@property(nonatomic,assign, setter=abc:,getter=haha)int age
可以理解为把[p setAge:]------>[p abc:], [p age] --------->[p haha];
@property(nonatomic,assign, setter=setVip:,getter=isVip) BOOL vip;
@property参数
@propertyxcode4.4前
@property帮我们生成get和set方法的声明
我们自己实现 get和set方法
或者
@property 和@synthesize联合
@propertyxcode 4.4后
@property增强
@propertyint age;
1)生成一个_age
2)生成get和set方法的声明
3)生成 get和set方法的实现
@property (......)int age;
@property 参数(一)
格式:@property (参数1,参数2) 数据类型 方法名
参数类别 | 参数 | 说明 |
原子性 | atomic | 对属性加锁,多线程下安全,默认值 |
| nonatomic | 对属性不加锁,多线程下不安全,但是速度快 |
读写属性 | readwrite | 生成getter、setter,默认值 |
| readonly | 只生成getter方法 |
set方法处理 | assign | 直接赋值,默认值 |
| retain | 先release原来的值,在retain新值 |
| copy | 先release原来的值,再copy新值 |
@property (assign) int age;
-(void)setAge:(int)age{
_age = age;
}
Car_car;
@property (retain) Car *car ;
-(void)setCar:(int)car{
if(_car ! = car){
[_car release];
_car = [car retain]; }
}
1)内存管理相关参数
retain:对对象release旧值,retain新值(适用于OC对象类型)
assign:直接赋值(默认,适用于非oc对象类型)
copy:release旧值,copy新值
验证assign如果作用在对象上,实际上就是直接赋值
@property 参数(二)
1)是否要生成set方法(若为只读属性,则不生成)
readonly:只读,只会生成getter的声明和实现
readwrite:默认的,同时生成setter和getter的声明和实现
2)多线程管理(苹果在一定程度上屏蔽了多线程操作)
nonatomic:高性能,一般使用这个
atomic:低性能,默认
3)set和get方法的名称
修改set和get方法的名称,主要用于布尔类型。因为返回布尔类型的方法名一般以is开头,修改名称一般用在布尔类型中的getter。
@property(nonatomic,assign, setter=abc:,getter=haha)int age
可以理解为把[p setAge:]------>[p abc:], [p age] --------->[p haha];
@property(nonatomic,assign, setter=setVip:,getter=isVip) BOOL vip;
<span style="font-size:14px;">#import <Foundation/Foundation.h> @interface Dog : NSObject @property (nonatomic,assign,readonly) int tuiNum; @end @implementation Dog @end @interface Person : NSObject @property (nonatomic,assign,setter=isVip:,getter=isVip) BOOL vip; //_vip @end @implementation Person @end int main(int argc, const char * argv[]) { @autoreleasepool { Dog *d = [Dog new]; // d.tuiNum ----> [d setTuiNum:4]; // d.tuiNum = 4; //调用set方法 NSLog(@"tuiNum = %d",d.tuiNum); //调用get方法 Person *p = [Person new]; [p isVip:YES]; if (p.isVip) { NSLog(@"这时VIP客户"); } } return 0; }</span>
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- Objective-C中NSNumber与NSDictionary的用法简介
- Objective-C中NSLog输出格式大全
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- 以实例讲解Objective-C中的KVO与KVC机制
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(二)
- objective-c(三)
- objective-c(四)-基本数据类型以及循环和选择结构