構造体
使うか?わからんが構造体です。
クラスがあるから使うかは不明。
データ構造を表す時に使うものです。
定義方法は、下に記載した感じで、データ構造を書いていきます。
typedef struct { int personId; char *personName; }person;
それで、どう使うかですが、上の構造体の場合、personって言う型になるので、
person person1;
と書いて変数を定義して使います。
後はですね、そのperson1の変数には、personIdとpersonNameが扱えるので、
下みたいな感じで利用します。
person1.personId = 100; person1.personName = "testUser"; NSLog(@"personId :%d", person.personId); NSLog(@"personName:%s", person.personName);
ちなみに、構造体の定義のしかたいろいろあるのですが、
多分、使わないので、一番最初に書いた方法がいいかなと思います。
それとですね構造体のデータ定義に別の構造体で定義した型を使えます。
あたりまえなんですが、構造体もただのデータ型なんで、下みたい感じで使えます。
typedef struct { int personId; char *personName; }person; typedef struct { int divisionId; char *divisionName; person person; }division; int main(int argc, const char * argv[]) { person person1; person1.personId = 100; person1.personName = "testUser"; division division1; division1.divisionId = 100; division1.divisionName = "testDivision"; division1.person = &person1; person *person2 = division1.person; NSLog(@"personId :%d", (*person2).personId); NSLog(@"personName:%s", (*person2).personName); }
それとですねオブジェクトを構造体で使いたいと思うのですが...ARCが有効だと使えません。
ARCが有効の場合は、下みたい感じで書くとコンパイルエラーになります。
typedef struct{ NSNumber *personId; NSString *personName; }person2;
じゃあ...ARC切ればいいのですが、そうするとですね。
自分で、メモリの確保と解放しないといけなくなっちゃうので...どうなんですかね。