我正在学习 ObjectiveC,遇到了一个与内省(introspection)有关的问题。基本上,我遍历对象数组并确定它们是否接受 lowercaseString
选择器。如果他们这样做,我会在对象上调用该选择器。在我确保该对象响应该选择器之后,我调用它。但是,当我这样做时,我收到此警告:“警告:‘NSObject;可能不会响应‘-lowercaseString’”
尽管代码按照编写的方式运行良好,但我不想收到警告。我假设有一种“正确”的方法来确保我没有收到那个警告(即不只是关闭警告)。有什么想法吗?
NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject:@"Hello!"];
[myArray addObject:[NSURL URLWithString:@"http://apple.com"]];
[myArray addObject:[NSProcessInfo processInfo]];
[myArray addObject:[NSDictionary dictionary]];
SEL lowercaseSelector = @selector(lowercaseString);
for (NSObject *element in myArray) {
if ([element respondsToSelector:lowercaseSelector]) {
NSLog([element lowercaseString]); // Warning here
}
}
最佳答案
您还可以使用 id
,它是任何类型的对象。
for (id element in myArray) {
if ([element respondsToSelector:lowercaseSelector]) {
NSLog([element lowercaseString]);
}
}
关于objective-c - 去掉 "' NSObject' 可能不响应 '-someMethod'"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1095926/