我必须将简单的 ARC 代码转换为非 ARC。虽然它相对简单,但我错过了实例变量赋值 self.var = xxx,而是写了 var = xxx。
虽然在 ARC 版本中它没有造成任何问题 - 在非 ARC 版本中它肯定会导致崩溃。
这是否意味着实际上可以在没有 self 的情况下在 ARC 中分配实例变量。所以他们得到保留?
谢谢!
ps 学习如何在 ARC 中编程的最佳资源是什么,这样可以避免明显的错误 - 到目前为止,我根本没有发现任何问题,但我很紧张,因为我可能错过了一些东西
我必须将简单的 ARC 代码转换为非 ARC。虽然它相对简单,但我错过了实例变量赋值 self.var = xxx,而是写了 var = xxx。
虽然在 ARC 版本中它没有造成任何问题 - 在非 ARC 版本中它肯定会导致崩溃。
这是否意味着实际上可以在没有 self 的情况下在 ARC 中分配实例变量。所以他们得到保留?
谢谢!
ps 学习如何在 ARC 中编程的最佳资源是什么,这样可以避免明显的错误 - 到目前为止,我根本没有发现任何问题,但我很紧张,因为我可能错过了一些东西
这是否意味着实际上可以在没有 self 的情况下在 ARC 中分配实例变量。所以他们得到保留?
是的,有点。
id obj_;
与此相同。
id __strong obj_;
obj_ 对分配的对象具有强引用。在 ivar 的所有者对象被解除分配之前,分配的对象不会被解除分配。
请参阅LLVM 文档或仍在 NDA 下的 Apple ARC 参考。
自动引用计数禁止“dealloc”的显式消息发送</p>
我分享了一个在新的 iOS5 SDK 中启用旧库编译的技巧。
单击项目。
点击目标。
选择构建阶段选项卡。
选择要在其中关闭 ARC 的多个文件。
按 ENTER / 按 Enter 键
键入“-fno-objc-arc”(不带引号,如图所示)