• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Obj-C の@property)

Obj-Cの@propertyを使用してC言語の構造体のメンバにアクセスできない問題

このQ&Aのポイント
  • iOS4環境で効率重視でC言語の構造体のノリであらゆるメンバにアクセスするコードを書いていますが、@synthesizeを使用してもメンバにアクセスできません。
  • アクセスしても値が変わらず、参照しても0が返されるため、何か宣言が違うのか疑問に思っています。
  • もし使用できない場合は@publicを使用してメンバを公開することも考えましたが、これも機能しません。C言語の構造体のようにアクセス制限なしにメンバにアクセスしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#161640
noname#161640
回答No.1

そうですねぇ、構造体でないといけませんか。Objective-Cなら普通はクラスを定義して使う感じですが……。とりあえず、以下のようにしてチェックしましたが、特に問題はなさそうです。クラスのプロパティに保管するならポインタでは。 typedef struct { int a; int b; } AAA; @interface Test : NSObject { AAA *aaa; } @property () AAA *aaa; @end @implementation Test @synthesize aaa; @end int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Test *test = [[[Test alloc] init] autorelease]; AAA a = {100,200}; test.aaa = &a; //test.aaa->a = 300; // とりあえずコメントアウト //test.aaa->b = 400; // とりあえずコメントアウト NSLog(@"a=%i,b=%i",test.aaa->a,test.aaa->b); [pool drain]; return 0; }

Skynetwork
質問者

お礼

ありがとうございます。 メモリの確保解放がいやらしくて(リークの元)、なるべく素の状態で構造体を 使いたいなぁと思っていました。どうせゲームだし、「きっちり書く」よりも「効率重視」です。 どうもありがとうございます。「簡単に」アクセッサでアクセスするのは難しいようですね。 教えていただいたやり方を参考に頑張ってみます。どうもありがとうございました。

その他の回答 (1)

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.2

例示のコードは、じっさいプロジェクトに書いてコンパイルしようとすると、エラーが出るのですが……? 実践で書いているコードでなく、サンプルで示すためのコードだとしても、書き誤りのないようにしてもらわないと、検証のしようがありません。

Skynetwork
質問者

お礼

申し訳ありません。行き詰まってしまって、へろへろの 状態で書き込んでしまいました。多分 atomic のスペルが間違っていたかもしれません。 お手数おかけしてすいませんでした。以後書き込む際には気をつけたいと思います。

関連するQ&A