Objective-C(9)内存管理之ARC-创新互联
ARC机制及判断准则
我们提供的服务有:网站设计、网站建设、微信公众号开发、网站优化、网站认证、邢台县ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的邢台县网站制作公司
ARC:Auto Reference Counting 自动引用计数
是一种编译器机制,在编译过程中,为我们的代码添加retain、release、autorelease等方法
在iOS7.0之后强制使用,使程序员不用再关心内存管理,要求:
1)不能使用retain release等操作引用计数的方法
2)不可以使用autorelease方法,但能够使用自动释放池
3)重写dealloc方法中不能再使用[super dealloc]
判断准则:
只要没有强指针指向对象,就会释放对象
强指针:__strong (默认)
弱指针:__weak
不要出现这样的代码:
__weak Person *p = [[Person alloc] init];
ARC机制下不允许调用方法autorelease,但并没有舍弃@autoreleasepool
ARC仅仅是在编译时帮助你加入retain/release/autorelease的代码调用。
所以,ARC之下使用@autoreleasepool依然有效,保证池子中的对象延迟释放。
@property的内存管理参数
@property的内存管理参数strong表示强指针属性,weak表示弱指针参数。
简单记忆:属性为OC对象时
使用strong代替retain
使用weak代替assign。使用weak参数解决循环引用问题
MRC:
retain:release属性旧值,retain属性新值
assign:直接赋值,不改变引用计数 (默认)
一般用于非OC对象,以及不占有对象的情况下
copy:release旧值,copy新值,一般用于NSString
ARC:
strong:强指针,相当于retain,用于对象
weak:弱指针,用于对象
assign:用于非OC对象
copy:用于NSString
MRC与ARC
将MRC项目修改为ARC:
Xcode edit-》refactor—》Convert to OC ARC
让ARC项目中的某些.m文件不使用ARC
项目配置中—》Build Phases—》Compile Sources中
为指定的.m文件设置Compiler Flags:-fno-objc-arc
让非ARC项目中的某些.m文件使用ARC:
Compiler Flags:-f-objc-arc
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
标题名称:Objective-C(9)内存管理之ARC-创新互联
本文来源:http://azwzsj.com/article/dispis.html