码迷,mamicode.com
首页 > 其他好文 > 详细

ARC自动引用计数学习笔记

时间:2015-06-11 18:58:12      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:

1.

在 ARC 中,所有*outlet*属性都推荐使用 weak,这些 view 对象已经属于 View Controller 的 view hierarchy,不需要再次定义为 strong(ARC 中效果等同于 retain)。唯一应该使用 strong 的 outlet 是 File‘s Owner,连接到 nib 的顶 层对象。 

因为 tableView 和 searchBar 这两个 property 定义为 weak,当它们指向的 对象被释放时,这两个变量会自动设置为 nil。

当 iOS App 接收到低内存警告时,View Controller 的 main view 会被 unload, 同时会释放所有 subview。这时 UITableView 和 UISearchBar 对象会自动释放, zeroing weak pointer system 就会自动设置 self.tableView 和 self.searchBar 为 nil。因此不需要在 viewDidUnload 中再次设置为 nil,实 际上当 viewDidUnload 被调用时,这两个属性已经是 nil 了。 

这并不意味着你可以不需要 viewDidUnload,只要你保持一个对象的指针, 对象就会存活。当你不需要某个对象时,可以手动设置指针为 nil。如上面示例 代码中的 soundEffect = nil; viewDidUnload()方法里面需要设置所有非 outlet 变量为 nil,同样还有 didReceiveMemoryWarning()方法。 

 

2.

property 的修饰符总结如下: 

  • strong:等同于"retain",属性成为对象的拥有者

  • weak:属性是 weak pointer,当对象释放时会自动设置为 nil,记住 Outlet

    应该使用 Weak

  • unsafe_unretained:等同于之前的"assign",只有 iOS 4 才应该使用

  • copy:和之前的 copy 一样,复制一个对象并创建 strong 关联

  • assign:对象不能使用 assign,但原始类型(BOOL、int、float)仍然

    可以使用 

 

ARC自动引用计数学习笔记

标签:

原文地址:http://www.cnblogs.com/mysaya/p/4569581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!