0

私はstackoverflowでこの質問を読みました。

bbumによって提供される抜粋の回答は以下のとおりです。

問題は代入ではなく、インスタンス変数をBOOL*initialBroadcast;として宣言した可能性がはるかに高くなります。

インスタンス変数をポインタとして宣言する理由はありません(少なくとも、BOOLのC配列が本当に必要な場合を除いて)。宣言から*を削除してください。

1.BOOLの配列を維持する必要がない場合でも、ポインター変数を使用することに何か問題がありますか?

2.それらを回避するのは良い習慣だと思いますが、Objective-Cに固有のものではなく、ポインターを持つすべてのプログラミング言語に適用されます。

私の質問に答えてください。

4

1 に答える 1

2

1.BOOLの配列を維持する必要がない場合でも、ポインター変数を使用することに何か問題がありますか?

そうすることは違法ではありませんが、それは悪い習慣です。ポインタ変数を使用するには、そのメモリを管理する(割り当てて解放する)必要があり、その結果として発生する可能性のあるバグのクラス全体があります。メモリの割り当てを忘れたり、誤ってポインタを変更したりすると、プログラムがクラッシュしたり、メモリの他の部分が上書きされたりする可能性があります。メモリを解放するのを忘れると、メモリリークが発生します。単純なBOOLを使用しているだけでは、これらのことは発生しません。さらに、ここでポインターを使用してもメリットはありません。あなたはたくさんの余分な仕事をします、そして見返りに何も得ません。

2.それらを回避するのは良い習慣だと思いますが、Objective-Cに固有のものではなく、ポインターを持つすべてのプログラミング言語に適用されます。

「ポインタを持つすべてのプログラミング言語」についてはわかりませんが、Cベースの言語(C、C ++、Objective-C)では、プレーンな場合に組み込み型へのポインタを使用することはお勧めできません。そのタイプの変数で十分です。メモリ管理を回避できる場合は、そうしてください。

ちなみに、bbumの言うことをすべて聞くの良い習慣です。真剣に。

于 2012-06-28T09:14:40.130 に答える