0

私はiOS6で開発しており、Xcode 4.5.2を使用しています。

UIViewControllerその名前を としましょうaViewController。このUIViewControllerでは、このコードを使用してプロパティとして宣言されたBOOL ポインターがあります。実際、これは私が実装したコードの一部ではないため、BOOL ポインターが使用される理由がよくわかりません。

ここで、このBOOL ポインターに値を代入すると、この有名な警告Incompatible integer to pointer conversion assigning to 'BOOL *' (aka 'signed char *') from 'signed char'が表示されますが、私の場合、BOOLはブール変数を指しているため、完全に理解できます。

この問題を解決するために、私はこれを試しました.だから私のコードは次のようになりました:

aViewController.aBoolPointer = YES;

それから、私は試しました、

aViewController.(*aBoolPointer) = YES;

Objective-c は C のスーパー セットであるため、C.*表記では が に等しいことを覚えてい->ます。そして、上記の表記法ではエラーが発生します。エラーの説明:識別子が必要です。

コードを次のように変更すると:

aViewController->aBoolPointer = YES ;

このエラーInstance variable aBoolPointer is protected が発生しました。

このコードを使用すると、ここに奇妙な問題があります

aViewController.aBoolPointer = NO ;

その後、警告はありませんでした。

だから私の質問は:

1 - BOOL ポインタにNO値を代入しても警告が表示されないのはなぜですか?

2 - BOOL ポインターにYES値を適切に割り当てるにはどうすればよいですか?

3 -私が説明した手順を考慮した場合の、はいまたはいいえの違いは何ですか?

皆さん、ありがとうございました。

4

2 に答える 2

3

1 BOOL ポインタに NO 値を割り当てても警告が表示されないのはなぜですか?

は, またはNOと同じなので、次のようにポインタにa を代入するようなものです:0NULLNULL

BOOL *p = NULL;

2 BOOL ポインターに YES 値を適切に割り当てるにはどうすればよいですか?

プロパティが次のように定義されている場合:

@property(assign, nonatomic) BOOL *boolp;

それで:

BOOL b = YES;
obj.boolp = &b;

3 私が説明した手順を考慮した場合の YES または NO の違いは何ですか?

質問がわかりません。

于 2013-01-24T08:21:01.403 に答える
0

BOOL ポインターは、他のポインターと同様に単なるポインターです。

if (aViewController.aBoolPointer != NULL)
    *(aViewController.aBoolPointer) = YES;

それでも、プロパティが BOOL ポインターを型として使用する理由がわかりません。サードパーティのフレームワークを使用していますか? ドキュメントを確認するか、作成者に問い合わせてください。

于 2013-01-24T08:24:29.343 に答える