gpt4 book ai didi

objective-c - 在 Objective-C 中是否需要一个类来覆盖 +alloc?

转载 作者:太空狗 更新时间:2023-10-30 03:48:31 26 4
gpt4 key购买 nike

基于对 this question 的一些回答看起来 +alloc 做了一些幕后魔术来为 Objective-C 中的对象实例分配内存。是否需要覆盖 +alloc?

最佳答案

这种情况很少见。

NSString 是一个重写 +alloc 作为实现细节的类的例子。如果你要检查,你会发现 +[NSString alloc] 返回类 NSPlaceholderString 的东西。这是字符串 class cluster 实现的一部分.

您也可以重写以从不同的分配 NSZone 分配为默认值。或者,您可以玩一些小把戏,比如调用 NSAllocateObjectextraBytes 设置非零值,以便在您的 ivar 之后提供动态的空间量。例如,您可能认为您通常最终得到的 NSString 的私有(private)子类看起来像这样:

@interface {
NSUInteger length;
unichar *data;
}

但事实并非如此。它是包含长度和字符数据的单个内存块。不同的 NSString 实例是不同大小的内存块。这是您可以通过直接调用 NSAllocateObject 来安排的事情。

但所有这些都是技巧和窍门。如果您覆盖 +alloc,就会发生一些特别的事情。

关于objective-c - 在 Objective-C 中是否需要一个类来覆盖 +alloc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1371390/

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