About this Blog

This Blog has English posts and Japanese posts. About Mac, iOS, Objective-C, and so on.

2012年11月24日土曜日

メソッドにCの2次元配列の先頭ポインタを渡す

Objective-Cと生のCの繋ぎ目ではいろいろと迷いませんか?
最近ハマったのが、2次元配列のポインタ渡し。

uint8_t twoDimArray[255][3]といった生のCの2次元配列をポインタで受け取りたい場合、以下のようにします。
@interface myClass : NSObject{
  uint8_t (*_twoDimArray)[3];
}

-(void)setTwoDimArray:(uint8_t [][3])twoDimArrayy;
@end

@implementation
-(void)twoDimArray:(uint8_t [][3])twoDimArray{
    //インスタンス変数にポインタを格納
    _twoDimArray = twoDimArray;
}
@end
引数の型は(uint8_t [][3])
それを受け取るインスタンス変数はuint8_t (*_twoDimArray)[3]とします。

これで、myClassは配列の先頭ポインタと、2次元目の要素数は3であるという情報を持つことができます。

ちなみに、今回渡しているのはインデックスカラーの画像のカラーマップです。

0 件のコメント:

コメントを投稿