2013-05-09 41 views
1

创建UI当我通过Interface Builder中创建用户界面,然后连接到IBOutlets我一直属性设置为弱...在代码性能

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

然后在为UIViewController代码可以参考我​​或_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,但我不确定这是否正确?

这样好吗?如果没有,是否有另一种方法来解决这个问题?

+0

检查这个http://stackoverflow.com/questions/9752525/after-auto-arc-conversion-assigning-retained-object-to-unsafe-property-object – 2013-05-09 10:03:40

回答

2

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

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

+0

啊,谢谢。我以为是这样,我只是想让其他人确认我所做的事情是正确的,因为我没有在任何地方读过或听过。谢谢 – Fogmeister 2013-05-09 10:02:43