带有数组对象的无法识别的选择器。
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
错误的原因
假设 chip1
和 chip2
是 NSImageView
的实例,您应该执行以下操作:
NSArray *array = [NSArray arrayWithObjects:chip1, chip2, nil];
您可以在定义数组时使用 Objective-C 泛型来避免将来出现此类问题:
NSArray <NSImageView*>*array = [NSArray arrayWithObjects:chip1, chip2, nil];
如果您尝试将 NSImageView
之外的 class 添加到数组中,这将导致编译器错误。
数组中的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
错误的原因
假设 chip1
和 chip2
是 NSImageView
的实例,您应该执行以下操作:
NSArray *array = [NSArray arrayWithObjects:chip1, chip2, nil];
您可以在定义数组时使用 Objective-C 泛型来避免将来出现此类问题:
NSArray <NSImageView*>*array = [NSArray arrayWithObjects:chip1, chip2, nil];
如果您尝试将 NSImageView
之外的 class 添加到数组中,这将导致编译器错误。