私はファイルの@interface
ブロックで宣言された変数がほとんどありません。それらは.m
ファイルに割り当てられています。私の@interface
(好ましいクラスメソッド)の1つのメソッドでは、これらの変数をリフレクションで列挙したいと思いますが、私は全く考えられません。私のコードの 例:C型バースの目的Cリフレクション
Consts.h
extern NSString *MyConst1;
extern NSString *MyConst2;
Consts.m
NSString *MyConst1 = nil;
NSString *MyConst2 = nil;
+ (void)load {
MyConst1 = ...;
MyConst2 = ...;
}
+ (void)someMethod {
// i could use class_copyIvarList for objective c properties/ivars,
// but is it possible to get that MyConts1 and MyConst2 via reflection ?
// I understand, that C have different namespace,
// and I have no experience with it.
}
Cではリフレクションはありません。値を列挙するには、配列に配置します。値を設定したい場合は、その値を指すポインタを列挙します。 – Sulthan
@Sulthanを配列に入れることは明らかです。私は重複したコードをたくさん作ってはいけないと思っています。たぶんobjcにCのランタイムマジックがありますか? @インタフェースに置かれた変数に違いがあるので、objcを使って何らかの形で反映させることができますか? –
Objective-CはCに対して魔法をしません。Objective-Cは、* Obj-C *オブジェクトのリフレクションを可能にする追加のメタデータとともに、C構造から構成されたオブジェクトを作成します。しかし、CはちょうどCです。 – Sulthan