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