0

クラスにプレフィックスを付けると、他の人のためにフレームワークを作成するときに最適です。これにより、類似した名前のクラスを持つ複数のフレームワークを使用でき、衝突が発生しなくなります。

ただし、アプリケーション バイナリ自体では、主要なアプリケーション クラスは、サードパーティまたは組み込みのいずれかのライブラリでプレフィックスのないクラスと衝突しない限り、実際にはプレフィックスを必要としません。

もちろん、サードパーティのライブラリを精査することはできますが、Cocoa.framework、QuartzCore.framework、Foundation.framework、CoreAnimation.framework などの全体を調べて、接頭辞のないクラスがあるかどうかを判断するのは困難です。

組み込みライブラリのいずれかに接頭辞が付いていないクラスがあるかどうかを確認する方法を知っている人はいますか? 決定的な答えがあれば、一般大衆は、アプリケーション バイナリのメイン (単独) コードベースでプレフィックスを付けずにクラスに名前を付けることにはるかに慣れていると感じるでしょう。

ありがとうございました。

4

3 に答える 3

1

決定的な答えがあれば、一般大衆は、アプリケーション バイナリのメイン (単独) コードベースでプレフィックスを付けずにクラスに名前を付けることにはるかに慣れていると感じるでしょう。

コンパイラは、実行時にクラス名が競合するかどうかを通知します。これは、含めるヘッダーとリンカー パスによって定義されます。

コンパイルできないため、プレフィックスのないクラスのコードベースをスキャンする必要はありません。

クラス名が重複している場合、「bla bla bla の重複するインターフェイスが見つかりました」というエラーが表示されます。

于 2012-08-08T03:12:10.043 に答える
1

実際、接頭辞を持たない従来のクラスがいくつかあります。ObjectList、 とProtocol頭に浮かびます。(はい、ProtocolApple が提供するクラスの名前であり、Objectではなくから継承していNSObjectます。)

これらのクラスのヘッダーは/usr/include/objc/.

于 2012-08-08T04:47:11.670 に答える
0

Jonathan Grynspanによって言及されたレガシークラス名に加えて、一部のプライベートフレームワークには間違いなくプレフィックスのないクラス名があります。たとえば、プライベートフレームワークには、、、などの名前のMIMEクラスが含まれています。MessageMimeBody

MIME(App Storeに参加したい場合)のようなプライベートフレームワークと直接リンクすることはできません。ただし、パブリックMessageUIフレームワークにMessageUIリンクしたり、プライベートMIMEフレームワークにリンクしたりする場合があります。アプリを起動すると、Objective-Cランタイムは、同じ名前のクラスが2つあることに気付き、一方を任意に選択し、もう一方を無視していることを警告します。

于 2012-08-08T05:09:17.873 に答える