【发布时间】:2011-07-15 10:45:26
【问题描述】:
使用 alloc 和 init 创建对象时,我应该如何设置保留属性? (不使用自动释放)
在标题中使用这一行(以及实现中对应的@synthesize 行):
@property(retain)UIWebView *webView;
这是我拥有的三个选项(我认为):
UIWebView *tempWebView = [[UIWebView alloc] init];
[tempWebView setDelegate:self];
tempWebView.hidden = YES;
self.webView = tempWebView;
[tempWebView release];
(这似乎是关于内存管理最好的,但它是更多的代码行并且涉及一个愚蠢的变量名,因此可读性降低)
self.webView = [[UIWebView alloc] init];
[self.webView release];
[self.webView setDelegate:self];
self.webView.hidden = YES;
(这个比较明显,但是内存管理好像不太好,Xcode的Analyzer也不喜欢)
webView = [[UIWebView alloc] init];
[self.webView setDelegate:self];
self.webView.hidden = YES;
(这个是最短的,比第一个例子更明显。但是它绕过了setter,所以如果稍后实现setter的自定义实现,它在这种情况下将不起作用)
那么应该使用哪个例子,或者有更好的方法?
【问题讨论】:
标签: objective-c memory-management properties retain