1

当我通过 Interface Builder 创建 UI 然后附加到 IBOutlets 时,我总是将属性设置为弱......

@property (nonatomic, weak) IBOutlet UILabel *someLabel;

然后在UIViewController我可以参考self.someLabel或的代码中_someLabel,它工作正常。

但是,如果我在代码中设置 UI...

@property (nonatomic, weak) UILabel *someLabel;

和...

self.someLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,10,10)];

然后我收到警告...

Assigning retained object to weak property; object will be released after assignment.

我通常的解决方法是将属性更改为,strong但我不确定这是否正确?

那样行吗?如果没有,还有其他方法可以解决这个问题吗?

4

1 回答 1

2

我通常的解决方法是将属性更改为强,但我不确定这是否正确?

这是 100% 正确的。声明基于 IB 的属性的原因weak是从 NIB 对象创建的视图已经保留了相应的 UI 元素,因此您不需要strong代码中的引用。

于 2013-05-09T10:01:51.763 回答