您的位置:首页 > 移动开发 > IOS开发

【IOS】ARC体验感受记录

2014-05-25 14:46 302 查看
本文固定链接:http://www.verydemo.com/demo_c134_i43204.html

1、不需要写retainreleaseautorelease

2、某对象只要被strong指针指向则不会被销毁,直到所有指向它的strong指针都指向别的地方;

3、默认情况下,所有实例变量和局部变量都是strong类型的;

4、weak类型的指针不持有对象,当所指对象失去所有指向它的strong指针时,该对象被销毁,同时该weak指针自动指向nil;

6、记住:

OSStatus status = SecItemCopyMatching((CFDictionaryRef) attributeQuery, (CFTypeRef *) &attributeResult);


变更如下:

CFTypeRef attri = (__bridge CFTypeRef)attributeResult;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)attributeQuery, &attri);
10、dealloc只是处理一些必要处理的事情,如中止一个还没有完成的网络请求、删除注册的代理或通知.不需要release和[super dealloc];
11、使用@autoreleasepool{}块代替NSAutoreleasePool;

12、属性命名不以new开发;

13、不使用NSAllocateObject和NSDeallocateObject

14、

__bridge

简单赋值,不会影响两边对象的retain count.

__bridge_transfer

赋值后释放右边的对象

__bridge_retained

赋值后也保留不释放右边的对象

15、IBOutlet最好都是weak型;

16、只要调用命名为Create, Copy, Retain的Core Foundation函数,你都需要使用 CFBridgingRelease() 安全地将值传递给ARC;

17、ARC Block, 避免捕获self,推荐采用如下代码模式: 

__weak id weakSelf = self;
block = ^()
{
id strongSelf = weakSelf;
if (strongSelf != nil)
{
// do stuff with strongSelf
}
}

18、ARC单例

<pre …………………………………………………………………………
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: