ios - ARC下__weak UIViewController subview 创建简明代码

标签 ios automatic-ref-counting

请注意,我没有使用 Interface Builder。

我已将我的 subview 设置为 __weak,这样当它们引用的对象被释放时,它们会在带有 ARC 的 iOS 5 上自动归零。这意味着我不必在 viewDidUnload 中手动将它们归零(这似乎是最安全的模式)。

但是因为它们很弱,所以当我alloc 时我不能直接将它们分配给我的ivars,或者ARC 立即释放它们,我找到的唯一解决方案是像这样分配给一个临时的强局部变量:

UIView *strongTmp = [[UIView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:strongTmp];
weakIVar = strongtmp;

这很丑陋,如果没有冗长的注释,它的目的不会立即显而易见。我想要一些(更)优雅的东西,比如:

[self.view addSubview:weakIVar = [[UIView alloc] initWithFrame:self.view.bounds]];

但这会生成相同的编译器警告(对象将在分配后立即释放)。

有什么建议吗?提前致谢。

最佳答案

“分配给局部变量”技术是完全正常的。只要习惯它,或者使用 nib。

关于ios - ARC下__weak UIViewController subview 创建简明代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8565844/

相关文章:

ios - 在 Monotouch.Dialog 中录制来自麦克风的声音

ios - Facebook Graph API - 带坐标的搜索事件

objective-c - 在 Objective-C 中声明我类的代表持有的对象的所有权

objective-c - CFRetain 是否使桥接的 ObjC 对象保持事件状态?

objective-c - 玩弄 ARC : Force release irritation?

ios - 点击禁用的 TabBarItem

ios - 如何在 iOS 11 中将导航栏设置为透明

ios - 如何获取相对于 GMT 以外时区的 NSCalendarComponent 值?

c++ - 使用 ARC 在 C 函数中取消引用 self,引用作为 intptr_t 传递

ios - ARC dealloc 在主线程以外的线程上调用