Tom*_*kie 3 cocoa-touch objective-c nslog ios
我有一个自定义对象数组,但我不能NSLog该数组中单个对象的属性,因为您可以将任何对象存储在数组中.我该怎么做呢?
Objective-C 通过运行时系统提供了几种内省技术.
您可以询问某个对象,如果它来自某种类型,或者对某个消息的响应.
for (id anObject in array ){
if([anObject isKindOfClass:[MyClass class]]){
MyOtherClass *obj = anObject.myProperty ;
NSLog(@"%@", obj);
}
}
Run Code Online (Sandbox Code Playgroud)
和
for (id anObject in array ){
if( [anObject respondsToSelector:@selector(aMethod)] ) {
NSLog(@"%@",[anObject aMethod]);
}
}
Run Code Online (Sandbox Code Playgroud)
由于属性通常会产生合成方法,因此第二种方法也适用于它们.
还要提一下 - 虽然不在这个问题的范围内:
如果他们满足某个协议,也可以询问类.而对象可以告诉那里的课程,这也是可能的:
[[anObject class] conformsToProtocol:@protocol(MyProtocol)];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2806 次 |
| 最近记录: |