首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么临时变量在分配时是必需的?

为什么临时变量在分配时是必需的?
EN

Stack Overflow用户
提问于 2011-08-09 02:00:56
回答 2查看 264关注 0票数 0
代码语言:javascript
复制
@interface MyViewController : UIViewController {
    UITextField *textField;
}
@property (nonatomic, retain) UITextField *textField;

UITextField *aTextField = [[UITextField alloc] init];   
self.textField = aTextField;
[aTextField release];   

我不知道为什么aTextField是必要的。我不能这样写吗?

代码语言:javascript
复制
@property (nonatomic, assign) UITextField *textField;

self.textField = [[UITextField alloc] init];    
EN

Stack Overflow用户

回答已采纳

发布于 2011-08-09 03:21:40

代码语言:javascript
复制
@property (nonatomic, assign) UITextField *textField;

self.textField = [[UITextField alloc] init];

来自@bbum答案的评论:

我没有保留的

。我做了财产保险。赋值后保留计数为1。我只需要在dealloc中释放一次。

不要这样做!

好的,如果在两者之间没有发生任何事情,就不会泄漏(属性是assign!)但这违背了对象所有权的基本原理。

标记为assign的属性用于您不拥有委托的对象,例如。因此,根据内存管理规则:您不能放弃您不拥有的对象的所有权。

这样做,你会遇到很多麻烦,因为你依赖于实现细节,你知道你创建了对象,你需要释放它。你不会想把自己放在那个位置的。如果您稍后设置了另一个对象呢?您可能会泄露前者,并可能过度释放后者,从而导致潜在的崩溃。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6986429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档