Objective-C で割り当て (または初期化) できないクラスをどのように作成できるのか疑問に思っています。
SKDownload Apple クラス (StoreKit フレームワーク) を複製しようとしていますが、ドキュメントに alloc または init メソッドが記載されていないことに気付きました。これは、ドキュメントには記載されていない可能性がありますが、コードには存在しますか? (このメソッドを使用できないようにするために、いくつかの .h 宣言が欠落していますか?)。このクラスを +alloc-init しようとしましたが、alloc と init のどちらかが null を返しました。
私が達成しようとしているのは、クラス A によってのみ作成できるゲッターのみを所有するクラス B です (ファクトリ メソッドと同様に、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 のクラス メソッドで渡された値をどのように返すことができますか? (ユーザーは B クラスを直接作成できないため、+alloc、-init、および/またはその他のメモリ割り当てメソッドが無効になる可能性があることを知っています。また、B のカスタム initWithValue メソッドも使用できない可能性があります)
Apple のエンジニアがそれをどのように行っているかについて、私は少し混乱しています..Apple が私に使用してほしくない隠された方法はありますか?
ありがとうございます。