oc对象中属性总结
2014-03-15 12:00
302 查看
UIView 用weak
NSstring 用copy
其他对象用strong
@property(getter = isRich,setter = setRich:)BOOL rich;//当属性是bool类型的时候我们一般需要指定生产的get和set方法,提高可读性,当然这里的set方法和默认的一致。
@property(assign,atomic,readonly) int age;//readonly代表只生产get方法,readwrite代表只生产set方法
@property(assign,atomic) int age;//这里的atomic代表这个属性是线程安全的,多个线程访问的时候会加锁,nonatomic代表不需要线程安全考虑,一般这个都用这个属性。不需要考虑线程安全。
@property(assign) int age;//assign表示按照普通的方法生产getset方法,不会像下面的内存管理一样生产set方法
@property(nonatomic,strong) Book * book;//nonatomic代表此对象不需要线程管理。
@property(retain,nonatomic) Book * book;//retain修饰oc对象的时候,会自动管理内存
retain修饰的时候set方法的时候会这么产生,当然retain是不会生产这样的dealloc,需要自己复写。
-(void)setBook:(Book *)book{
if(_book!=book){
[_book release];
_book=[book retain];
}
}
当然在完整的内存管理的时候,set进来的时候引用计数器+1,在这个类的dealloc方法里要release一次
NSstring 用copy
其他对象用strong
@property(getter = isRich,setter = setRich:)BOOL rich;//当属性是bool类型的时候我们一般需要指定生产的get和set方法,提高可读性,当然这里的set方法和默认的一致。
@property(assign,atomic,readonly) int age;//readonly代表只生产get方法,readwrite代表只生产set方法
@property(assign,atomic) int age;//这里的atomic代表这个属性是线程安全的,多个线程访问的时候会加锁,nonatomic代表不需要线程安全考虑,一般这个都用这个属性。不需要考虑线程安全。
@property(assign) int age;//assign表示按照普通的方法生产getset方法,不会像下面的内存管理一样生产set方法
@property(nonatomic,strong) Book * book;//nonatomic代表此对象不需要线程管理。
@property(retain,nonatomic) Book * book;//retain修饰oc对象的时候,会自动管理内存
retain修饰的时候set方法的时候会这么产生,当然retain是不会生产这样的dealloc,需要自己复写。
-(void)setBook:(Book *)book{
if(_book!=book){
[_book release];
_book=[book retain];
}
}
当然在完整的内存管理的时候,set进来的时候引用计数器+1,在这个类的dealloc方法里要release一次
-(void)dealloc{ //insert your code; [_book release]; [super dealloc]; } 上面的setter方法和这个dealloc方法是配套的使用的内存管理
oc中所有在.h里面声明的方法都是公共方法。 当要声明一个私有方法的时候只要将这个方法放到.m文件里面即可,并且没有在.h里面没有声明。 oc中的成员变量一般都用"_"开始。 当我们要自定用oc的初始化方法的话 initWithAge:(int)age andNo:(int)no{ self=[self init] if(self){ _age=age; _no=no; } return self; } oc中有个方法和java的toString方法一样叫做description方法,复写即可(这个方法是来自NSObject的)原来只会打印内存地址,这里将其复写了下 -(NSString *)decription{ NSString * str =[NSString stringWithFormat:"ksdfhk%d",_age]; return str; } @synthesize age;//这个关键字在生成setter和getter方法的时候会在.h里面找那个同名的属性,如果找不到会自动造一个同名的 当如果我们要其访问的成员变量是_age的时候 我们可以这么写
@synthesize age=_age;//这个就是在指定访问的成员变量;有开发工具生产的属性都是私有的。 xcode4.5以后,只要你写了@property int age就会自动产生getter和setter的声明和实现,,,实现的时候还是自动访问_age这个属性(现在.h里面找),如果没有这个属性就会自动生产一个私有_age( 这里指的私有的就是在.m文件里面定义的) 所有从这里就可以看出私有的变量可以在.h里面定义然后用@private修饰,或者直接定义在.m文件里面 这里生产的都是标准的setter和getter方法,如果有其他需求必须自己实现其getter和setter方法。
oc中修饰成员变量的3中权限 @private @protected @public 但是@public好像没什么意义,要怎样用到这个@public呢 Student *stu=[[[Student alloc]init]autorelease]; stu->age=10; age是Student类的一个公共属性,所以可以像上面那样访问
相关文章推荐
- js对象属性方法大总结(收集)
- OC中对于属性的总结(@property)
- javascript中面向对象中对象,属性,原型链和一些扩展知识总结
- 关于Javascript与表单结合时出现"对象不支持此属性或方法"的问题总结(不断更新中...)
- OC属性总结笔记
- 关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:
- 【OC复合题】之定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。(Objective-C)
- 关于OC对象属性中的NSString类型为什么用copy修饰
- Oc-语句总结(2)--NSArray(补充)—对象
- 【Objective-C】OC 中对象属性的设置器和访问器
- ajax对象常用属性,事件,方法大小写问题的总结
- 在oc语言中对象对象属性的封装
- js对象属性方法大总结
- OC_03对象方法属性等基本概念
- 【OC学习-31】利用KVC即键值编码来访问一些对象的属性,尽管这些属性是私有的
- OC 对象调用属性或实例变量或方法的细节。
- OC总结----类的方法.继承.NSString类的常用方法.NSMutableString 类的方法.数组类.字典类.block语法以及数组排序高级.属性.category (分类,类目).延展,等
- javascript入门·对象属性方法大总结
- javascript入门·对象属性方法大总结
- hql中关于一对多,根据数组里面某个对象的某个属性查询的方法总结。