我已经创建了一个iphone应用程序,使用xcode 4.2中没有ARC的空模板。我目前没有使用ARC,因为我想了解引用计数的基础知识。在应用程序委托我有以下方法:为什么窗口在应用中自动释放:didFinishLaunchingWithOptions:并在dealloc中释放?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
为什么window
自动释放?是因为AppDelegate将来不会使用它吗?但它被分配给一个实例变量。还有一个dealloc方法,window
发布。为什么当它已经被自动发布时被释放?
- (void)dealloc
{
[_window release];
[super dealloc];
}
谢谢!这解释了一切。 – jorurmol
如果它被直接赋值(window = ....而不是self.window = ...)它不是必要的吗? – jorurmol
对,由于alloc,retainCount将为+1。在dealloc中会回到0。 –