私が構築しているフレームワークで公開しているヘッダーの @property のセッターを非表示にしようとしています:
//File: X.h
@interface X
@property (nonatomic,readonly, strong) NSString* identifier;
@end
このインターフェイスにいくつかのメソッドを追加するカテゴリがあります。
//File: X+implementation.h
@interface X (Implementation)
...
@end
このカテゴリは、私のプロジェクトでのみアクセスできます。つまり、フレームワークを構築しているときに公開していません。多くのソースは、readwrite プロパティを使用してインターフェイス拡張を追加する必要があると言っていますが、私のカテゴリは "Xm" の readwrite 定義を参照できないため、これは役に立ちません。そこで、カテゴリ宣言に追加することを考えました:
//File: X+implementation.h
@interface X ()
@property (nonatomic, readwrite, strong) NSString* identifier;
@end
//same file
@interface X (Implementation)
...
@end
これはコンパイルされますが、[X setIdentifier:]: unrecognized selector sent to instance が表示されます
Xm で拡張機能を複製して、Xm でセッターを手動で作成し、変数を手動で @synthesize しようとしましたが、どれも機能していないようです。この場合、どうすればよいですか?