objective-c - 去掉 "' NSObject' 可能不响应 '-someMethod'"警告

标签 objective-c cocoa

我正在学习 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/

相关文章:

iphone - UITableViewCell,出队和自动释放?

ios - Xcode 9 "could not build module ‘Foundation’“

objective-c - 用魔法词作为类别前缀的惯例是什么?

objective-c - NSData 和 void * 之间的转换

ios - 从 super View 中删除的自动布局不会更新

cocoa - 运行代码一段时间并在必要时终止

objective-c - 如何从 NSViewController 中显示 View ?

cocoa - iTunes 中的灰色 NSTableView

objective-c - AbsoluteToNanoseconds 与 AbsoluteToDuration

macos - 选择器没有已知的实例方法 'myWindowController'