请注意,我没有使用 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/