1

Objective-C では、NSNumber* が実際に BOOL であることを示す方法はありますか? 今私のコードは次のようになります:

NSNumber *audio; // BOOL wrapper

コメントがないと、 *audio がブール値であることがすぐにはわかりません。

私の最初の考えは、試してみることでした

typedef NSNumber* BOOL;

しかし、typedef が Objective-C を理解していないため、明らかにコンパイラ エラーが発生しました。

変数名を変更せずに (既存の API を使用する場合は困難です)、NSNumber* がブール値を保持していることをどのように示す必要がありますか?

4

3 に答える 3

1

明らかに、最善の解決策は、プロパティの名前を isAudio や hasAudio などに変更することです。しかし、それができない場合、平凡な解決策はあなたが説明したようなtypedefです。BOOL は objc.h の Objective C で既に定義されているため、記述した typedef は失敗します。

typedef signed char BOOL; 

それに加えて、bool/int だけでなく、実際には NSNumber であることを示していないため、混乱を招きます。私は次のようなものを提案します:

typedef NSNumber NSNumberBool;

または、おそらくこの場合は、次のようにする方がよいでしょう。

#define NSNumberBool NSNumber

そして、次を使用します。

NSNumberBool *audio;

または、あなたが行ったようにコメントを使用してください。

于 2009-08-06T11:41:30.493 に答える
0

最良の方法は、変数 audioBool またはブール値を表す何かを呼び出すことです。コメントはすべて良いものですが、見逃されたり、読まれなかったりすることがあります。

多くの変数の名前変更に問題がある場合は、Xcode のリファクタリング ツールを使用できます。変数名を右クリック (または cmd + クリック) し、[リファクタリング...] オプションを選択して、変数の名前を変更します。プレビューをクリックすると、Xcode が変更点を表示します。気に入ったら申し込んで、気に入らなければキャンセルしてください。

Xcode には、リファクタリング操作をコミットする前にスナップショットを作成するオプションも用意されています。これはデフォルトでオンになっています。そのため、何か問題が発生した場合は、元に戻すことができます。

于 2009-08-06T08:02:54.507 に答える