黑马程序员——OC基础--@property在开发中需要注意的使用细节
来源:互联网 发布:单词社交网络学后即焚 编辑:程序博客网 时间:2024/05/22 11:52
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
本篇文章介绍引入ARC后@property的使用,跟ARC之前的还是很不一样的,
一、.h和.m文件的变化说明
1.对于.h头文件,主要是将属性定义由retain变为strong
@property (retain, nonatomic)变为
@property (strong, nonatomic)
2.在ARC之前,我们经常在.m中使用分类拓展来增加私有的property
@interface MJViewController ()@property (nonatomic, retain) NSArray *data;@end这样做主要是简化实例对象的手动内存管理,让property的setter方法自动管理原来对象的释放,以及新对象的retain。但是有了ARC,这样的代码就不再需要了。一般来说,仅仅为了简化内存管理,是不再需要使用property的,虽然你仍然可以这样做,但直接使用实例变量是更好的选择。只有那些属于public的实例变量,才应该定义为property
我们可以直接在.m类实现中定义private实例变量,不必写分类拓展了:
@implementation MJViewController { NSArray *data;}不过还是要在viewDidUnload方法中将data设置为nil,因为data是个strong指针,当不再使用一个对象时,应该设置为nil
- (void)viewDidUnload { [super viewDidUnload]; data = nil;}二、IBOutlet
在ARC中,所有IBOutlet属性都推荐使用weak, 这些view对象已经属于View Controller的view hierarchy,不需要再次定义为strong。因此,这些定义为weak的IBOutlet属性都不需要在IBOutlet中设置为nil
三、@property的修饰符小结
• strong : 该属性值对应 __strong 关键字,即该属性所声明的变量将成为对象的持有者,等同于"retain"
• weak : 该属性对应 __weak 关键字,与 __weak 定义的变量一致,该属性所声明的变量将没有对象的所有权,并且当对象被释放之后,对象将被自动赋值nil,记住IBOutlet应该使用weak
• unsafe_unretained : 等效于__unsafe_unretaind关键字声明的变量,等同于之前的"assign",iOS 5之前的系统用该属性代替 weak 来使用
• copy : 和之前的copy一样,复制一个对象并创建strong关联
• assign : 对象不能使用assign,但原始类型(BOOL、int、float)仍然可以使用
0 0
- 黑马程序员——OC基础--@property在开发中需要注意的使用细节
- 黑马程序员——OC基础@property语法详解
- 黑马程序员——OC基础---@property @synthesize
- 黑马程序员--OC之@property的使用
- 黑马程序员——OC基础语法—@property和@synthesize使用
- 黑马程序员——OC语言基础---@property关键字介绍及使用
- ——黑马程序员——OC中@property参数
- 软件开发中需要注意的细节
- 黑马程序员—OC基础—autorelease的使用
- 黑马程序员------OC基础-----@property和@synthesize
- 黑马程序员——OC基础学习(三)---从传统setter方法和getter方法到@property增强型使用(体验代码的优化过程)
- 黑马程序员——OC基础---简单的OC程序
- 黑马程序员 --- OC中@property和@synthesize的用法
- 黑马程序员------OC @property 关键字及构造方法的使用
- 黑马程序员——OC基础---核心语法(点语法,成员变量的作用域,@property和@synthesize)
- iOS开发-OC中属性创建需要注意的地方(property实例变量的创建和标准存取方法)
- iOS开发-OC中属性创建需要注意的地方(property实例变量的创建和标准存取方法)
- 黑马程序员------OC基础语法的使用
- 将inpupt属性设置为readOnly hibernate抛出异常
- 模版:struts.xml配置拦截器
- 创建一个简单的android aidl工程
- Solr Replication 使用
- su和sudo区别
- 黑马程序员——OC基础--@property在开发中需要注意的使用细节
- ios默认的字体大小单位为pt
- ubuntu12.04安装AMD显卡驱动
- > /dev/null 2>&1
- JavaWeb - XML
- CSS3 动态生成文字旋转动画样式
- Injection of autowired dependencies failed;
- 利用Xtrabackup工具备份及恢复(转)
- java值传递,引用传递,数组传递