我一直在嘗試一些來自Erica Sadun的書「iPhone Developer's Cookbook」的視圖代碼,並發現了一些我不明白的代碼。下面是一個的loadView方法的代碼:爲什麼iPhone Developer's Cookbook的這段代碼有效?
- (void)loadView
{
// Create the main view
UIView *contentView = [[UIView alloc] initWithFrame:
[[UIScreen mainScreen] applicationFrame]];
contentView.backgroundColor = [UIColor whiteColor];
self.view = contentView;
[contentView release];
// Get the view bounds as our starting point
CGRect apprect = [contentView bounds];
// Add each inset subview
UIView *subview = [[UIView alloc]
initWithFrame:CGRectInset(apprect, 32.0f, 32.0f)];
subview.backgroundColor = [UIColor lightGrayColor];
[contentView addSubview:subview];
[subview release];
}
我的問題是,爲什麼她釋放內容查看,但隨後在[contentView addSubview:subview]
再次使用它?有self.view = contentView
保留contentView?
這看起來不對。 'contentView'不會在方法結束之前被釋放,所以這可能不會導致任何問題,但我無法想象爲什麼你會故意用這種方式構建它。 – kubi 2009-08-09 00:33:51
不是。對self.view的賦值保留了contentView,所以在創建對象時最近可以得到它。這是故意構建的,因爲(在Cocoa範例中)視圖控制器保留視圖是有意義的。 – 2009-08-09 15:40:31