【发布时间】:2012-09-16 20:42:26
【问题描述】:
当我在我创建的类上使用alloc 时(例如在具有底层NSMutableArray 对象的堆栈类上),它会将alloc 应用于它的所有属性吗?还是我必须重写alloc 方法以确保在属性上调用alloc?
【问题讨论】:
标签: objective-c alloc
当我在我创建的类上使用alloc 时(例如在具有底层NSMutableArray 对象的堆栈类上),它会将alloc 应用于它的所有属性吗?还是我必须重写alloc 方法以确保在属性上调用alloc?
【问题讨论】:
标签: objective-c alloc
您不需要重写 alloc 方法,属性将为您初始化为它们的默认值,即对象为 nil,原始类型为默认值。
所以你需要做的就是:
[[myObject alloc] init]; or the shortcut [myObject new];
你不能覆盖 alloc 方法,所有的属性都会被设置为它们的默认值。但是,您可以覆盖 init,为属性设置初始值(而不是它们的默认值):
- (id) init {
self = [super init];
if (self) {
//initialize some properties
}
return self;
}
【讨论】:
alloc
alloc 实际上进行了初始化。它将isa 指针初始化为正确的类指针,并将所有iVar 初始化为0。
不会为您分配所有属性。
但是,不要为此重写 alloc,重写 init 以分配并初始化属性。
【讨论】:
一般情况下,不会为您分配属性。但是,您在 IB 中添加并设置为网点的网点将自动创建。
【讨论】: