Iphone 关于释放由我创建的对象
我正在用Xcode 4.2和最新的SDK开发一个iPhone和iPad应用程序 我在没有使用ARC的情况下创建了一个选项卡式应用程序,我在Iphone 关于释放由我创建的对象,iphone,objective-c,ios,memory-management,Iphone,Objective C,Ios,Memory Management,我正在用Xcode 4.2和最新的SDK开发一个iPhone和iPad应用程序 我在没有使用ARC的情况下创建了一个选项卡式应用程序,我在AppDelegate上发现了这一点: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame
AppDelegate
上发现了这一点:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
UIViewController *viewController1, *viewController2;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease];
viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease];
} else {
viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPad" bundle:nil] autorelease];
viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPad" bundle:nil] autorelease];
}
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
我是否需要释放viewController1,以及viewController2?发送
自动释放
将导致稍后发送释放
消息。因此,无需担心,它们将被发布。否。它们将被发送自动释放,因此它们不需要通过您编码来发布 Sendingautorelease
只需将它们添加到当前的NSAutoreleasePool
,该池在每个运行循环结束时被排空。因此,无需使用release
额外释放它们
提示:如果它是一个非常大的对象(或许多对象,例如在循环中创建的对象),您确实希望立即释放以将其从内存中释放,请调用release以获得即时效果并减少内存占用。否,因为它们是发送给视图控制器的
autorelease
消息。其他人提到了您发送给视图控制器的autorelease
。另一件值得一提的事情是,尽管arrayWithObjects
保留了它的内容,但它本身是以自动删除状态返回的,因此tabBar
的retain将是唯一防止它被破坏的方法。释放视图控制器的方式如下:tabBarController->NSArray of its controllers->your view controllers。