1

私は現在、開発者向けの新しいコンポーネントを作成しています。統合を非常に簡単にしたいので、アプリケーションデリゲート内で作成されたかどうかを確認できるようにしたいと考えています。それにアクセスして、そのメソッドを呼び出すことができます。

私は答えが次のようなものであることを望んでいました:

Class clazz = [[[UIApplication sharedApplication] delegate] class];

unsigned int varCount;

Ivar *ivars = class_copyIvarList(clazz, &varCount);

for (int i = 0; i < varCount; i++) {
    Ivar var = ivars[i];

    NSString *typeEncoding = [NSString stringWithCString:ivar_getTypeEncoding(var) encoding:NSUTF8StringEncoding];
    NSString *name         = [NSString stringWithCString:ivar_getName(var) encoding:NSUTF8StringEncoding];

}

しかし、私の問題は、そのコードで、初期化されたコンポーネントを見つけることができるということです...しかし、どうすればそれにアクセスできますか?

私はこれを試しました:

if ([typeEncoding isEqualToString:@"@\"MyClassName\""]) {
        MyClassName *myclass = (MyClassName *)object_getIvar(self, var);
    }

成功しなければ(良いコンポーネントを指していません)...

誰かがこれについて解決策を持っていますか?

ありがとう :)

4

1 に答える 1

0

わかった、

最後に私はそれを自分で見つけました。

アプリケーション デリゲートからfounded var にアクセスする方法は次のとおりです。

if ([typeEncoding isEqualToString:@"@\"MyClassName\""]) {
    MyClassName *myclass = (MyClassName *)object_getIvar([[UIApplication sharedApplication] delegate], var);
}

この行により、myclass はアプリケーション デリゲートから適切な var をポイントし、そこからメソッドを呼び出すことができるようになりました (そのために作成された内部メソッドで試行されました)...

これが誰かを助けることを願っています...

于 2012-09-25T09:11:00.137 に答える