这是相当先进的东西。我将一些运行时代码作为一个侧面项目搞乱了。我试图解决的问题是这样的:如果我有一个id类型的对象,并且该对象可以是一个字符串,一个类或一个协议,我该如何判断它是什么?iOS:如何判断类型id的对象是类还是协议
例如,这里是一些代码,我搞乱:
[objArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[NSString class]]) {
// Do something with the string ...
} else if (... obj is a Protocol ...) {
// Do something with the protocol ...
} else if (... obj is a Class ...) {
// Do something with the class ...
} else {
// It's something we are not interested in!
}
}];
到现在为止我已经没有问题,存储为的NSString,阵列中的类和协议实例的分类和其他的一切都是精细。我需要检测它们的原因很简单,就是我无法控制进入该代码的内容。所以我需要确定循环处理的obj
在做什么之前。
我一直在尝试各种运行时功能和东西,但到目前为止没有运气,如果确定什么对象是。
任何人都试过类似的东西?
协议发现被定义为因此,它们实际上可以存储在NSArrays和一个类型NSObject的的喜欢。我已经很成功地做到了这一点。很显然,我正在做的事情是一个非常动态的东西,而且它通常只是Objective C代码的一部分。 – drekka 2015-04-03 13:35:22