我正在为开发人员创建一个新组件,因为我希望它非常容易集成,我希望能够看到它是否已在应用程序委托中创建,如果是,我是想要访问它并能够调用它的方法。
我希望答案应该是这样的:
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);
}
没有成功(它没有指向好的组件)......
有人有解决方案吗?
谢谢:)
答案 0 :(得分:0)
好,
最后我自己找到了。
从应用程序委托访问已创建的var的方法如下:
if ([typeEncoding isEqualToString:@"@\"MyClassName\""]) {
MyClassName *myclass = (MyClassName *)object_getIvar([[UIApplication sharedApplication] delegate], var);
}
使用这一行,myclass现在指向应用程序委托的良好变量,并且能够从中调用方法(尝试使用为此创建的内部方法)...
希望这会对某人有所帮助......