Iphone 卸载应用程序代理中的视图

Iphone 卸载应用程序代理中的视图,iphone,memory,uiviewcontroller,Iphone,Memory,Uiviewcontroller,我有以下代理文件。主窗口中的My AboutViewController.xib加载AboutViewController.xib,并且AboutViewController出口与之连接。此外,navController是从另一个ViewController.xib加载的。 AboutViewController的视图在启动时显示,一秒钟后删除,因此我通过将ivar设置为nil来释放其视图控制器 由于about view控制器是由XCode自动加载的,所以我自己手动将其设置为nil是否有问题(内

我有以下代理文件。主窗口中的My AboutViewController.xib加载AboutViewController.xib,并且AboutViewController出口与之连接。此外,navController是从另一个ViewController.xib加载的。 AboutViewController的视图在启动时显示,一秒钟后删除,因此我通过将ivar设置为nil来释放其视图控制器

由于about view控制器是由XCode自动加载的,所以我自己手动将其设置为nil是否有问题(内存泄漏等)?为什么

谢谢

-MyProjAppDelegate.h

#import <UIKit/UIKit.h>
@interface MyProjAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    UIViewController *aboutViewController;
    UINavigationController *navController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UIViewController *aboutViewController;
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@end
由于about view控制器是由XCode自动加载的,所以我自己手动将其设置为nil是否有问题(内存泄漏等)


不,您没有做错任何事情,因为您正在使用属性访问器方法(
self.aboutViewController
)将其设置为
nil
;访问者将负责
释放
。(并且,在发布之前,您正确地将其从superview中删除:-)

好的,所以当我从内存管理方面考虑时,我不是aboutViewController的所有者,因为我不是自己创建的,所以我不应该发布它,或者我是所有者,因为XCode为我创建了它(代替我),所以我可以发布它,对吗?
#import "MyProjAppDelegate.h"
#import "AboutViewController.h"

@implementation MyProjAppDelegate
@synthesize window;
@synthesize aboutViewController;
@synthesize navController;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    [window addSubview:aboutViewController.view];
    [window makeKeyAndVisible];

    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(showMainView) userInfo:nil repeats:NO];
}

-(void)showMainView {
    [aboutViewController.view removeFromSuperview];
    self.aboutViewController = nil;

    [window addSubview:navController.view];
}

- (void)dealloc {
    [navController release];
    [aboutViewController release];
    [window release];
    [super dealloc];
}
@end