gpt4 book ai didi

iphone - [MyClass alloc] 和 [[self class] alloc] 之间的区别在哪里?

转载 作者:行者123 更新时间:2023-12-03 18:30:40 24 4
gpt4 key购买 nike

我有充分的理由不应该做这样的事情吗?示例:

我有一个类(class)MyClass。在那里我有这个实现:

- (id)copyWithZone:(NSZone*)zone {
MyClass *copy = [[MyClass allocWithZone:zone] init];
copy.someproperty = [[self.someproperty copy] autorelease];
return copy;
}

相反,我发现了一个如下所示的片段:

- (id)copyWithZone:(NSZone*)zone {
MyClass *copy = [[[self class] allocWithZone:zone] init];
copy.someproperty = [[self.someproperty copy] autorelease];
return copy;
}

区别在于,第一个类仅使用其自己的类可读的名称,就像它是任何其他类一样。第二个问自己那是什么类别。这有什么区别吗?或者在这种情况下两者都完全可以使用?

最佳答案

如果您子类化 MyClass,则 -copyWithZone: 的第二个示例将返回子类的实例。第一个示例没有,它返回 MyClass 的实例。

关于iphone - [MyClass alloc] 和 [[self class] alloc] 之间的区别在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1282880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com