我正在使用 iPad 6.1 模拟器,但我不明白为什么当我尝试将另一个对象添加到 IBOutletCollection 时会导致错误
__NSArrayI addObject:发送到实例的无法识别的选择器。
我建立了一个测试项目并在下面证明了它:
ViewController.m
@interface ViewController ()
@property (strong, nonatomic) IBOutletCollection(UILabel) NSMutableArray *collection;
@property (strong, nonatomic) NSMutableArray *collection2;
@end
@implementation ViewController
-- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UILabel *label = [[UILabel alloc]init];
// Test 1 - Pass
NSMutableArray *array = [[NSMutableArray alloc]init];
[array addObject:label];
// Test 2 - Pass
_collection2 = [[NSMutableArray alloc]init];
[self.collection2 addObject:label];
// Test 3 - Fails
[self.collection addObject:label];
}
@end
就在测试 3 之前,如果我执行 alldb:p self.collection
它会返回
(NSMutableArray *) $0 = 0x071817b0 @"3 objects"
它所指的三个对象是我通过 IB 连接的对象。不知何故,我认为 XCode 4.3.2 在撒谎,集合必须是 NSArray。
我也尝试[_collection addObject:label]
过同样的结果。
任何关于这个主题的想法将不胜感激。