例:
unsigned char colorComps[] = {2, 3, 22, 55, 9, 1};
これをプロパティで参照する Objective-C メソッドに渡します。最初にヒープメモリにコピーする必要があります。しかし、安全のために、メソッドにこのステップを実行させても問題ありませんか、それともメソッドに渡す前にヒープにコピーする必要がありますか?
例:
unsigned char colorComps[] = {2, 3, 22, 55, 9, 1};
これをプロパティで参照する Objective-C メソッドに渡します。最初にヒープメモリにコピーする必要があります。しかし、安全のために、メソッドにこのステップを実行させても問題ありませんか、それともメソッドに渡す前にヒープにコピーする必要がありますか?
配列を C 関数に渡す場合とまったく同じルールが適用されます。C 配列に関して、Objective-C には特別な処理はありません。ただし、C 配列型でプロパティを宣言することはできません。回避策については、この質問とこの質問を参照してください。この場合、(配列を公開したい) オブジェクトは、メモリを割り当て、配列をコピーし、必要に応じて解放する必要があります。「外側」に割り当ててから「内側」に解放するのは悪い考えです。
本当にC 配列が必要でない限り(たとえば、引数としてそれを必要とするサードパーティのライブラリがあり、常にそれを構築する必要があるため)、Objective-C オブジェクト (NSArrays の NSNumbers) を使用する必要があります。 . 特に、構文が非常に単純になったため:
NSArray *myArray = @[ @(1), @(42), @(543) ];
NSArray/NSNumber ソリューションがボトルネックであることを実際に測定していない限り、単に「高速だから」という理由だけで C 配列を使用するのは時期尚早の最適化です。私は iOS でマルチメディア処理を行っていますが、パフォーマンス上の理由から NSArray から C 配列に切り替える必要はありませんでした。