带有数组对象的无法识别的选择器。

Unrecognized selector with array objects.

数组中的NSImageView对象变成了字符串。如何将它们转换为 NSImageView 以避免最后一行生成无法识别的选择器错误?

NSArray *array = [NSArray arrayWithObjects: @"chip1”, @"chip2” nil],
for (id image in array) {
[image setImage: nil];
}

Objective-C 中的 @"..." 符号是 shorthand 用于创建 NSString。在上面的代码示例中,您正在创建一个 NSString 的数组,这就是为什么在调用 setImage:.

时会出现 unrecognized selector 错误的原因

假设 chip1chip2NSImageView 的实例,您应该执行以下操作:

NSArray *array = [NSArray arrayWithObjects:chip1, chip2, nil];

您可以在定义数组时使用 Objective-C 泛型来避免将来出现此类问题:

NSArray <NSImageView*>*array = [NSArray arrayWithObjects:chip1, chip2, nil];

如果您尝试将 NSImageView 之外的 class 添加到数组中,这将导致编译器错误。