0

私は試してみましたが、ブロックを id 変数に正常に割り当てました。ブロックは obj-c オブジェクトですか? nil の代わりに NULL を使用する理由 (オブジェクトの場合)

4

2 に答える 2

2

C ブロックの優れた機能は、基本的な Obj-C オブジェクトのように動作できることです。ブロックを にキャストできidます。「copy」、「retain」、「release」、「autorelease」などのブロック Obj-C メッセージを送信できます。ブロックを NSArray または NSDictionary に詰め込むことができます。しかし、ブロックを実行するときが来たら、元の型にキャストし直す必要があります。

NULL、nil、Nil、および 0 は、ゼロの別の単語です。どちらを選択するかは、仲間のプログラマーのためのドキュメントにすぎません。それはコンパイラに違いをもたらします。

慣例により、NULLは null C ポインターをnil表し、null Obj-C オブジェクトを表します。ブロックはそれらの両方であるため、null ブロッ​​クを表すために NULL または nil を選択したことで、仲間のプログラマーがあなたを嘲笑することはありません。そして、コンパイラは確かに気にしません。

于 2012-12-16T03:20:38.200 に答える
2

ブロックは、Objective-C コンテキストでオブジェクトとして使用できます (つまり、GCC または LLVM でコンパイルされた純粋な C または C++ プログラムもブロックを使用できますが、どちらの言語も Objective-C を理解しないため、オブジェクトとして使用することはできません)。意味のある方法で。)

通常、nilfor オブジェクト、Nilfor Classes、およびNULLその他のポインターに使用する必要があります。NULLfor ブロックの代わりに誰が使用しているのかわかりませんがnil、それは私が Objective-C コンテキストで行うことではありません (以前のように、C または C++ コンテキストで、nilObjective-Nilを導入しないと利用できません)。 C ランタイム ヘッダーなので、ここで使用しNULLます。)

于 2012-12-16T00:33:24.350 に答える