我想知道如何在 Objective-C 中创建一个无法分配(或初始化)的类?
我正在尝试复制 SKDownload Apple 类(StoreKit 框架),我注意到文档没有提到任何 alloc 或 init 方法。这可能在文档中丢失但出现在代码中?(缺少一些 .h 声明以阻止我们使用此方法?)。我试过 +alloc-init 这个类,alloc 和 init 都返回 null。
我想要实现的是一个只有 getter 的 B 类,它只能由 A 类创建(就像工厂方法一样 - 只有 A 可以创建和返回 B 实例,但用户不能直接创建 B ) .
例子:
@interface A : NSObject
// Only A "+createB" class method can create B instances
+ (Second *)createBWithValue:(int)value;
@end
@interface B : NSObject
- (id)init; // return nil
+ (id)alloc; // return nil
- (int)value; // this returns the value passed from A
@end
问题 1:您将如何继续创建此类课程?有可能吗?
问题2: B上的-(int)value如何返回A中类方法传入的值?(知道 +alloc、-init 和/或其他内存分配方法可能无效,因为用户无法直接创建 B 类 - B 中的自定义 initWithValue 方法也可能不可用)
我对 Apple 工程师如何做到这一点感到有些困惑……是否存在 Apple 不希望我使用的隐藏方法?
谢谢。