首页 > 代码库 > iOS 基础之—— Properties
iOS 基础之—— Properties
一篇关于iOS 编程中 @property 方法中属性的介绍,写的十分简洁明了,原文链接请戳。
===读后分割线====
在iOS 5之后,有了ARC 的出现,不需要手动进行内存管理,@property 中的属性也有了一些变化。
现在常使用的如下:
属性 | 功能介绍 |
getter= | 给getter方法一个自定义名称 |
setter= | 给setter方法一个自定义名称 |
readonly | 不生成setter方法 |
nonatomic | 禁止多线程,相较默认的线程保护(atomic)可提高性能 |
内存管理属性 | |
weak | 弱引用,所声明的变量没有对象的所有权,可防止retain cycle |
strong | 强引用,所声明的变量持有对象的所有权 |
copy | 创建并引用赋值对象的副本 |
copy 属性:
可用来替代 strong 属性。最好是用来声明变量(values),而不是connections or relationships。
在Car.h 中:
@property (nonatomic, copy) NSString *model;
Car *honda = [[Car alloc] init]; NSMutableString *tmp = [NSMutableString stringWithString:@"Honda"]; honda.model = tmp; NSLog(@"%@", honda.model); // Honda [tmp setString:@"Nissa"]; NSLog(@"%@", honda.model); // Honda
当变量属性为copy时,tmp 值的改变不会改变honda.model 的值,而strong\weak 属性下honda.model值会改变。
weak 属性:
delegate 和outlet 应用weak 属性来声明。
其他属性(在iOS 5之后的开发中不推荐使用):
retain
unsafe_unretained
assign
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。