如果我创建了一个包含两个对象指针(见下文)的新对象,则在创建该对象时,指针将被设置为nil;
@interface rocketShip : NSObject {
NSString *name;
NSNumber *thrust;
}
如果(由于一些意想不到的原因)我没有分配这些指针,然后在我的dealloc方法中释放它们,我很确定它是可以的,只是想检查一下?
- (void)dealloc{
[name release];
name = nil;
[thrust release];
thrust = nil;
[super dealloc];
}
加里
发布于 2009-10-01 04:36:41
向nil发送消息不会导致错误,所以这没问题。不过,您需要确保指针实际上是空的--向垃圾指针发送消息可能会导致错误。
发布于 2009-10-01 04:37:22
是的,您可以这样做,因为您可以安全地向nil
发送消息(例如release
),而它不会做任何事情。
发布于 2009-10-01 04:50:46
如果使用访问器属性创建get/set方法:
@interface rocketShip : NSObject {
NSString *name;
NSNumber *thrust;
}
@property (retain, nonatomic) NSString *name;
@property (retain, nonatomic) NSNumber *thrust;
在您的.m文件中:
@synthesize name;
@synthesize thrust;
然后,您可以在dealloc中将变量设置为nil。这实际上会调用你的setter,并将引用计数减一,然后清理掉所有东西。
https://stackoverflow.com/questions/1503680
复制相似问题