sha*_*ron 3 iphone objective-c automatic-ref-counting
我在网上看过很多文章,我对ARC有点困惑.我将在下面列出我的问题,请帮我回答.
1.)关键字strong做什么(in @property (nonatomic, strong) …)?
2.)我们不要release或不再需要autorelease什么alloc,因为我得到一个警告说我不需要.(我不在我的Mac上,所以我无法复制我收到的警告.)
3.)我在Xcode 4.2中找不到Leaks工具.它去了哪里?或者我们不必再检查泄漏了吗?
4.)使用Xcode 4.2创建项目时,我点击了"启用ARC",那么我的程序是否可以在iOS 3上运行?(我认为ARC仅支持iOS 4及更高版本.)
strong是一个ARC模拟retain(retainARC下没有).这意味着属性值将由@property定义的类保持,并在重新分配或释放时释放.(请注意,在ARC下,无需在dealloc中释放或取消属性).
ARC的重点在于编译器处理retain/ release例程,因此不需要手动内存管理方法.
您可以通过运行Profile(Product -> Profile菜单)并选择Leaks instrument来检查泄漏.可以使用循环引用或CoreFoundation代码引入泄漏(ARC不适用于CoreFoundation).此外,如果您混合ARC和非ARC代码,后者可能是泄漏的来源.
从iOS 4.0开始,OS支持ARC(虽然需要iOS 5 SDK).4.0和5.0 ARC支持之间的关键区别在于weak属性说明符的可用性.__weak当strong释放引用的值时,弱属性(变量)将自动无效.weak4.0 中没有属性,因此__unsafe_unretained应该使用说明符(它与assign说明符类似,它不保留值并且可以指向已经解除分配的值,因此它很危险).
以下是ARC的一个很好的解释: 关于自动引用计数你需要知道的一切
强相当于retainARC.它表示所有权:"强"关键字的作用是什么
不,那已经为你完成了.ARC自动在(编译)代码中插入这些语句.这是它的主要工作.但是,根据Abizern的评论,这仅适用于您的对象和Cocoa对象.如果您正在使用Core Foundation(CF*)类,那么您必须阅读有关__bridge强制转换族的内容.你可能会开始在这里阅读
它在仪器中.根据iHunter的回答,Cmd + I或Product-> Profile,然后选择Leaks.特别重要的是(2).
不起作用.
| 归档时间: |
|
| 查看次数: |
5508 次 |
| 最近记录: |