2011-07-25 4 views
1

質問を誤解しないでください。私はこれらの2つの言語でのポインタの実装はCがObjective Cのサブセットであるのと同じであることを知っています。CとObjective Cではポインタが異なって使用されていますか?

私の質問は実際のコードでのポインタの実際の使用についてです。ベストプラクティスは異なるのですか?異なったやり方はなぜですか? Objective C環境でその知識を実際に使用したいのであれば、Cでポインタの使用法を学ぶときに、何を覚えておく必要がありますか?

答えて

2

ポインタは本当に彼らがCにするために使用されているもののサブセットのために使用されています。場合によっては、関数ポインタを引数として受け入れるメソッドを見つけることができ、コールバックでコンテキストを提供するためにvoid *ポインタが使用されることもありますが、両方とも徐々にブロックに置き換えられます。

Cとは異なり、それらは一般に配列または文字列を参照するために使用される、またはイテレータとしてれていません。メモリ管理(malloc/freeなど)ではポインタを使用しません。これはすべてシステムフレームワークによって処理されるためです。

編集: あなたは関数ポインタにNSArrayののsortedArrayUsingFunction:context:sortedArrayUsingComparator:で同じタスクを達成&ブロックベースの方法を見つけることができます。コールバックにも同じ基本原則が適用されます。Mike Ash's block-based KVO methodsとCocoaに組み込まれているものを比較してください。

+0

あなたはブロックが、この目的のために使用されている方法についてのさらなる読書のためのリンクを提供していただけますか? –

3

ポインタは、CとObjective-Cではまだ同じ種類のポインタです。主な違いは、Cポインタは通常malloc/calloc/vallocから直接得られ、freeでリリースされることです。 Objective-Cオブジェクトが使用されている場合、ポインタは通常alloc/initの呼び出しによって取得され、releaseの呼び出しで解放されます。これは、オブジェクトの所有権を維持するためのメモリ管理があるためです。オブジェクトへの参照を中心に渡すと、参照によって返す:Objective-Cの中

関連する問題