我正在使用 XCode 5.1.1,目标是 iOS 7.0。
当使用助理编辑器从我的 Storyboard创建媒体时。我注意到我有几个选择来创建属性或 ivar。我一直在使用的是直接拖动到我的 *.m @implementation 并创建如下代码:
@implementation AudioViewController
{
__weak IBOutlet UILabel *posLabel;
__weak IBOutlet UILabel *durationLabel;
__weak IBOutlet UIButton *playButton;
}
我不需要在这个类之外访问这些,所以这看起来很方便,但我想知道这个方法与创建属性是否有任何“陷阱”,尤其是在内存管理方面。我在其他堆栈答案中读到,您必须创建(弱)属性,否则我将不得不手动 [release]。我想知道这个 __weak 是否在这种情况下处理了这个问题?
谢谢!
最佳答案
使用相同的修饰符创建属性和实例变量大多是类似的。当您使用 ARC 时,您不必释放强属性或实例变量——它们将在对象被释放时释放。界面元素导出通常被创建为弱的,因为它们被 View 层次结构保留。你应该小心;如果你打算在某个时候从 View 层次结构中删除元素,你应该将修饰符更改为 strong 以确保它们被 View Controller 保留。顶层 socket 也应该创建得足够强,以确保它们在 nib 加载后保留。
关于ios - __weak IBOutlet ivars 需要发布和/或不良做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23369488/