Dev*_*Dev 8 runtime introspection objective-c
我有以下一段代码
NSMutableArray *mutArray = [[NSMutableArray alloc] init];
[mutArray addObject: [NSProcessInfo processInfo]];
[mutArray addObject: @"This is NSString Object"];
[mutArray addObject: [[NSMutableString alloc] initWithString: @"1st Mutable String"]];
for (id element in mutArray){
NSLog(@" ");
NSLog(@"Class Name: %@", [element className]);
NSLog(@"Is Member of NSString: %@", ([element class] isMemberOfClass: [NSString class]) ? YES: NO);
NSLog(@"Is kind of NSString: %@", ([element class] isKindOfClass: [NSString class]) ? YES: NO);
}
Run Code Online (Sandbox Code Playgroud)
我正在得到以下输出(并期望指出)
Class Name: NSProcessInfo
Is Member of NSString: NO
Is Kind of NSString: NO
Class Name: NSCFString <-- Expecting NSString
Is Member of NSString: NO <-- Expecting YES
Is Kind of NSString: NO <-- Expecting YES
Class Name: NSCFString <-- Expecting NSMutableString
Is Member of NSString: NO
Is Kind of NSString: NO <-- Expecting YES
Run Code Online (Sandbox Code Playgroud)
我在这里错过了一些可怕的简单吗?谢谢!
dme*_*edi 17
使用:
[element isMemberOfClass: [NSString class]]
Run Code Online (Sandbox Code Playgroud)
不:
[[element class] isMemberOfClass: [NSString class]]
Run Code Online (Sandbox Code Playgroud)
NSString和NSMutableString实现为类集群(请参阅文档的iPhone版本中的 "字符串对象" ).
所以isKindOfClass:应该返回true但isMemberOfClass:将返回false,因为NSString不是对象的确切类型.
| 归档时间: |
|
| 查看次数: |
8547 次 |
| 最近记录: |