@interface MyViewController : UIViewController {
UITextField *textField;
}
@property (nonatomic, retain) UITextField *textField;
UITextField *aTextField = [[UITextField alloc] init];
self.textField = aTextField;
[aTextField release]; 我不知道为什么aTextField是必要的。我不能这样写吗?
@property (nonatomic, assign) UITextField *textField;
self.textField = [[UITextField alloc] init]; 发布于 2011-08-09 03:21:40
@property (nonatomic, assign) UITextField *textField;
self.textField = [[UITextField alloc] init];来自@bbum答案的评论:
我没有保留的
。我做了财产保险。赋值后保留计数为1。我只需要在dealloc中释放一次。
不要这样做!
好的,如果在两者之间没有发生任何事情,就不会泄漏(属性是assign!)但这违背了对象所有权的基本原理。
标记为assign的属性用于您不拥有委托的对象,例如。因此,根据内存管理规则:您不能放弃您不拥有的对象的所有权。
这样做,你会遇到很多麻烦,因为你依赖于实现细节,你知道你创建了对象,你需要释放它。你不会想把自己放在那个位置的。如果您稍后设置了另一个对象呢?您可能会泄露前者,并可能过度释放后者,从而导致潜在的崩溃。
https://stackoverflow.com/questions/6986429
复制相似问题