如何在应用程序委托中访问我的类的var?

时间:2012-09-24 16:13:29

标签: iphone objective-c

我正在为开发人员创建一个新组件,因为我希望它非常容易集成,我希望能够看到它是否已在应用程序委托中创建,如果是,我是想要访问它并能够调用它的方法。

我希望答案应该是这样的:

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);
    }

没有成功(它没有指向好的组件)......

有人有解决方案吗?

谢谢:)

1 个答案:

答案 0 :(得分:0)

好,

最后我自己找到了。

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

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

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

希望这会对某人有所帮助......