gpt4 book ai didi

ios - 向声明为 NSMutableArray 的 IBOutletCollection 添加更多对象会导致异常

转载 作者:行者123 更新时间:2023-11-28 22:34:49 25 4
gpt4 key购买 nike

我正在使用 iPad 6.1 模拟器,我不明白为什么当我尝试将另一个对象添加到 IBOutletCollection 时会导致错误

__NSArrayI addObject: unrecognized selector sent to instance.

我建立了一个测试项目,并在以下方面进行了证明:

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 之前,如果我执行 lldb:p self.collection 它返回(NSMutableArray *) $0 = 0x071817b0 @"3 个对象"

它所指的三个对象是我通过 IB 连接的对象。不知何故,我认为 XCode 4.3.2 在撒谎,集合必须是 NSArray。

我也试过 [_collection addObject:label] 结果相同。

如有任何关于该主题的想法,我们将不胜感激。

最佳答案

如果我们调查您的错误消息,

__NSArrayI addObject:发送到实例的无法识别的选择器

什么是 __NSArrayI?

__NSArrayI 是不可变数组 (NSArray) 的代码字

这意味着,该错误试图告诉您您正在调用 NSArray 的 addObject: 方法。 NSArray 没有 addObject: 方法。

出了点问题。

self.collection 已经成为一个 NSArray,而不是 NSMutable 数组。可能是您正在将 NSArray 分配给 self.collection,或者您已将 self.collection 重新初始化为 NSArray。

请仔细检查您的代码。

关于ios - 向声明为 NSMutableArray 的 IBOutletCollection 添加更多对象会导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com