请告诉我正确的方式来释放一个@property/IBOulet的UIViewController中
问题描述:
我读过有关正确的内存管理可可/ Objective-C的许多不同的事情请告诉我正确的方式来释放一个@property/IBOulet的UIViewController中
例如香港专业教育学院读任何IBOutlets需要被设置为'零“,但像NSArray dosnt?
我也想知道,是很重要之前调用超级方法或后我释放/无一切
为了把这个内存问题睡觉,可有的请与100%正确的方式回复您会创建一个保留的属性并将其释放。如果你不是100%确定,请不要回答。
这是我现在正在做的事情,但有些东西显然是错误的,因为我得到了非常令人沮丧的EXEC_BAD_ACCESS!?!几乎就像我发布了两次?
header.h
@interface MyViewController : UIViewController {
UILabel *aLabel;
NSArray *aArray;
}
@property (nonatomic, retain) IBOutlet UILabel *aLabel;
@property (nonatomic, retain) NSArray *aArray;
method.m
@implementation MyViewController
@synthesize aLabel, aArray;
- (void)dealloc
{
[aLabel release], aLabel = nil;
[aArray release];
[super dealloc];
}
- (void)viewDidUnload
{
self.aLabel = nil; //Not sure about this bad boy???
[super viewDidUnload];
}
@end
答
在的dealloc您已经发布了aLabel.Means它不是memory.Again你写这行--- aLabel = nil;删除这行。所以它不能给出Exec_badaccess。这意味着事件,即使你没有指针stilll你试图访问指针。
你有正确的想法。 dealloc中的'aLabel = nil'是不必要的,但无害。你的崩溃发生在哪里? – 2011-05-24 12:02:20
Argh jeez,刚刚发现我因为一些疯狂的原因在我的某个方法中释放了我的财产。我知道它释放两次!那么我所做的是正确的呢?只要在dealloc及其所有快乐的日子里省略aLabel =零? – jennas 2011-05-24 12:26:35
'aLabel = nil'不会崩溃或任何东西。它只是清理一只即将离开物体其余部分的伊娃。所以这不是必要的。 – 2011-05-25 01:21:20