iOS4環境で効率重視でとにかくC言語の構造体のノリであらゆるメンバにアクセスする
コードを書いています。
struct AAA {
int a;
int b;
};
@interface Test {
AAA aaa;
}
@property (nonatmic) AAA aaa;
@end
でもって@synthesize aaa;をやると、Test のインスタンスを test
とすると
test.aaa
でもってアクセスできますが、肝心の
test.aaa.a や test.aaa.b はコンパイル、実行時に何のエラーも
出ない変わりに、一切値が変わらず、参照しても0です。
エラーならエラーではじいてくれれば分かるのですが、
なぜか0を返すので、何かの宣言が違うのか、悩んでしまいました。
もしこれが全く使用で使うことができないとしたら、
@public であらゆるメンバは公開としようかと思いましたが、
驚いた事にこれも全く予想どおりに機能しません。
やりたいことは、C言語の struct {...}のように、なんの
アクセス制限も無く、自由にメンバにさわりたい、ただそれだけの
事なのです。
よろしくお願いします。
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;
}
ありがとうございます。
メモリの確保解放がいやらしくて(リークの元)、なるべく素の状態で構造体を
使いたいなぁと思っていました。どうせゲームだし、「きっちり書く」よりも「効率重視」です。
どうもありがとうございます。「簡単に」アクセッサでアクセスするのは難しいようですね。
教えていただいたやり方を参考に頑張ってみます。どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- JavaScript jsonテキストデータの並び替えができるサービスを教えてください 2 2022/08/05 20:16
- Excel(エクセル) セルの値からファイルを複数作りたい 2 2022/10/06 12:42
- Gmail gmailに弾かれて困っています。SPFレコードについて、これは詰んでいるでしょうか 3 2023/06/10 13:08
- Gmail SPFレコードとDNSサーバーについて、gmailを設定できるかどうか 2 2023/06/10 23:55
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- JavaScript JavaScript?jQuery?で書き方を教えてください。 初心者です。 AAAという要素をステ 2 2023/08/04 22:09
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- Excel(エクセル) セルを参照して条件で値をコピーする 3 2023/02/08 17:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
End Sub が必要です。
-
Excel VABについて 下記記述が...
-
typedef による2重定義
-
C2065: 'EnumDisplayDevices' :...
-
intel fortranのエラーで困って...
-
43:syntax error at end of input
-
pythonの条件分岐(if)
-
Excel・Word リサーチ機能を無...
-
UserForm1.Showでエラーになり...
-
Excel マクロ VBA プロシー...
-
合計3TBのデータのハッシュ値を...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
メッセージボックスのOKボタ...
-
配列数式の解除
-
VBAでfunctionを利用しようとし...
-
教えて下さい
-
マクロの連続実行
-
一つのTeratermのマクロで複数...
-
TERA TERMを隠す方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
End Sub が必要です。
-
pythonの条件分岐(if)
-
Excel VABについて 下記記述が...
-
43:syntax error at end of input
-
フォートランのエラーについて...
-
intel fortranのエラーで困って...
-
他クラスからForm1内コントロル...
-
Excel VBA: UserForm.Show で実...
-
AccessVBAでVLookupを使いたい
-
対応する関数ヘッダーがありません
-
VB2005でOCXを動的に呼び出すに...
-
C# IEnumerable が IEnumerable...
-
ラズパイ上の、pythonのエラー...
-
コンパイルで未定義のシンボル
-
select関数の使用方法について
-
HEW3とBorlandC++でクラス定義...
-
構造体のポインタ参照
-
VB.NETのStructureの使い方を教...
-
waveOutProc関数での定義
-
フォートラン(fortran)のエラー...
おすすめ情報