__weak IBOutlet ivars需要发布和/或不良做法吗?

时间:2014-04-29 15:51:55

标签: ios automatic-ref-counting uistoryboard

我正在使用XCode 5.1.1,目标是iOS 7.0。

使用“助理”编辑器从故事板创建插座时。我注意到我有一些选择来创建属性或ivars。我一直在使用的是直接拖到我的* .m @implementation,它创建代码如:

@implementation AudioViewController
{
    __weak IBOutlet UILabel *posLabel;
    __weak IBOutlet UILabel *durationLabel;
    __weak IBOutlet UIButton *playButton;
}

我没有必要在这个类之外访问这些,所以这看起来很方便,但我想知道这个方法是否有任何“陷阱”与创建属性,特别是在内存管理方面。我读了其他堆栈的答案,你必须创建(弱)属性或我必须手动[释放]。我想知道这个__weak是否会在这种情况下处理这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用相同的修饰符创建属性和实例变量大多类似。使用ARC时,不必释放强属性或实例变量 - 它们将在取消分配对象时释放。接口元素出口通常被创建为弱,因为它们由视图层次结构保留。你应该小心;如果您打算在某个时刻从视图层次结构中删除元素,则应将修改器更改为strong以确保它们由视图控制器保留。顶级出口也应该设置为坚固,以确保它们在笔尖加载后保留。