人々がコメントの文脈を理解できるように、オリジナルを残しました。願わくば、この例が私が求めているものをよりよく説明するのに役立つことを願っています.
ファイル スコープの可視性を持つクラスを Obj-C で作成できますか?
たとえば、私は NSNotificationCenter にメソッド スクイズリング カテゴリを作成しました。このカテゴリは、オブザーバーが解放されると自動的に削除されます。
実装にはヘルパー クラスを使用し、名前の競合を防ぐために命名スキームを考案しました。カテゴリは NSNotificationCenter (WJHAutoRemoval) であるため、このコードで使用されるプライベート ヘルパー クラスの名前は...
WJH_NSNotification_WJHAutoRemoval__Private__BlockObserver
それは一口です、そして現在私はこれをやっています...
#define BlockObserver WJH_NSNotification_WJHAutoRemoval__Private__BlockObserver
コードで BlockObserver を使用するだけです。
しかし、私はその解決策が好きではありません。
コンパイラに、「ねえ、このクラスの名前は Bar です。私のコードは Bar としてアクセスしますが、実際に知る必要があるのは私だけです。自分でファンキーな名前を生成するか、できればそうしないでください」と伝えたいのです。気にする必要があるのは私だけなので、シンボルをエクスポートすることさえできます。」
普通の C の場合は「静的」で、C++ の場合は「名前空間 { }」です。
Obj-Cでこれを行うための推奨/最良/唯一の方法は何ですか?
元の質問
別の実装内でヘルパー クラスを使用したい。ただし、外部連携はしたくありません。現在、ヘルパー クラス名を非常にユニークなものにして、リンカー シンボルが重複しないようにしています。
静的 C 関数を使用できますが、コンパイル ユニット内でのみリンカーが表示されるヘルパー クラスを記述したいと考えています。
たとえば、次のようなものを複数の .m ファイルに入れたいと思います。各「ヘルパー」はそのファイルに固有であり、リンカー アクセスを持つ他のコンパイル ユニットはありません。これを 10 個の異なるファイルに入れると、10 個の個別のクラスになります。
@interface Helper : NSObject
...
@end
@implementation Helper : NSObject
...
@end
私はどこにもこれのヒントさえ見つけることができず、インターフェース/実装に「静的」を追加しようとする私の弱い試みはエラーで行われました.
ありがとう!