尝试插入nil

ico*_*ter 2 cocoa boolean nsmutablearray

看起来很容易将一个布尔值添加到NSMutableArray中.

假设toDoArray初始化为NSMutableArray.下列:

BOOL checkBoxState = NO;
[toDoArray addObject:checkBoxState]; 
Run Code Online (Sandbox Code Playgroud)

生成错误"尝试插入nil".

将负布尔值添加到可变数组的正确方法是什么?

bbu*_*bum 6

正如其他人所说,NSMutableArray只能包含Objective-C对象.它们不必是子类NSObject,但这是最典型的.

但是,在您看到attempt to insert nil.运行时错误之前很久,您应该看到编译器警告:

warning: passing argument 1 of 'addObject:' makes pointer from integer without a cast
Run Code Online (Sandbox Code Playgroud)

它[以模糊和迂回的方式]告诉你究竟是什么问题; 你试图将某些东西粘贴到一个不是[指向对象]指针的数组中.

注意警告并修复它们.大多数情况下,警告的存在将指示运行时错误或崩溃.


Jef*_*rth 5

NSMutable数组需要一个id,它是Objective C的一个奇怪部分.id是任何对象,但不是基元(例如,ints是基元,而NSArrays是对象,在扩展中是ids).

这个问题可能有所帮助

  • 没有什么奇怪的`id`.Objective-C没有固定的根类,因此,`id`作为对任何类的实例的引用而存在. (3认同)