【发布时间】:2011-07-21 16:28:22
【问题描述】:
有时我对何时不释放对象感到困惑。我有:
NSTimer *timer2;
timer2 = [NSTimer scheduledTimerWithTimeInterval: (5)
target: self
selector: @selector(someMethod:)
userInfo: nil
repeats: YES];
每五秒执行一次的方法是:
-(void) someMethod:(NSTimer*)theTimer
{
NSLog(@"code got executed");
}
我有另一种方法可以在我的根视图控制器上放置另一个 nib 文件:
ViewControllerObjetivos *control = [ViewControllerObjetivos alloc];
[control initWithNibName:@"ViewControllerObjetivos" bundle:nil];
UINavigationController *navControl = [[UINavigationController alloc]
initWithRootViewController:control];
[self presentModalViewController:navControl animated:NO];
[navControl setNavigationBarHidden:YES];
[control release];
[navControl release];
当我调用最后一个方法时,会在根视图控制器上放置一个新的 nib 文件。并且 someMethod 仍然被调用!
所以我很困惑是否应该释放 timer2,因为我没有使用 init 或 alloc 一词,也没有使用 copy 来初始化它。那我该怎么办?我应该停止它然后调用我显示的最后一个方法吗?或者我应该发布整个 nib 文件,因为我将使用一个新文件?
【问题讨论】:
标签: iphone objective-c ios cocoa-touch release