【发布时间】:2012-04-10 07:20:48
【问题描述】:
我有一个关于 dealloc() 和 viewDidUnload() 方法的快速问题。我注意到很多代码示例,人们似乎在做不同的事情。
另外,我可能会补充一点,ARC 不是一个选项。
(1) 我是否应该在 dealloc() 方法中将所有属性设置为 nil,包括 IBOutlets。例如,我是否应该释放实例变量 [_myArrary release] 并设置 self.myArrary = nil。
(2) 在 viewDidUnload 中,我认为我必须将所有 IBOutlets 设置为 nil,以及在 viewDidLoad 中创建的任何内容。但是,myString 呢,假设它在调用 viewDidLoad 后在另一个方法中初始化。我应该将它设置为 nil 吗?
如果我有一些这样声明的属性:
@property (nonatomic, retain) IBOutlet UITableViewCell *myTableCell;
@property (nonatomic, retain) IBOutlet UILabel *myLabel;
@property (nonatomic, retain) NSArray *myArrary;
@property (nonatomic, retain) NSString *myString;
I synthesize them as such:
@synthesize myArrary = _myArrary;
@synthesize myTableCell;
@synthesize myLabel;
@synthesize myString;
- (void)viewDidLoad
{
[super viewDidLoad];
_myArrary = [NSArrary alloc] initWithObjects:@"testObject", nil];
}
- (void)viewDidUnload
{
self.myArrary = nil;
self.myTableCell = nil;
self.myLabel = nil;
[super viewDidUnload];
}
- (void)dealloc
{
[_myArray release];
[super dealloc];
}
【问题讨论】:
标签: iphone objective-c ios