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

好的,

最后我自己找到了。

从应用程序委托访问创建的 var 的方法如下:

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

通过这一行,myclass 现在指向来自应用程序委托的好的 var,并且能够从中调用方法(尝试使用为此创建的内部方法)...

希望这会帮助某人...

于 2012-09-25T09:11:00.137 回答