NSMutableArray无法添加对象。

3

我认为我犯了一个很基本的错误,但是我正在使用NSMutableArray,但这种方式并没有将我发送出去的对象添加进去。我有一个属性(和synthesize)。

@property (nonatomic, strong) NSMutableArray *kpiStorage;

接着:

ExampleObject *obj1 = [[ExampleObject alloc] init];
[kpiStorage addObject:obj1];
ExampleObject *obj2 =  [[ExampleObject alloc] init];
[kpiStorage addObject:obj2];

NSLog(@"kpistorage has:%@", [kpiStorage count]);

为什么控制台总是返回(null)?我理解错了什么吗?


2
在发布问题之前,请确保查看相关问题列表。这个问题过去已经被反复回答了。 - rmaddy
对不起,不知何故搜索没有引导我到这里。 - Luckystrik3
我不是在参考搜索。当你输入一个问题时,SO会显示许多可能相关的问题。在提交问题之前,请始终检查它们。 - rmaddy
3个回答

14

确保你已经为kpiStorage分配了内存。

self.kpiStorage = [[NSMutableArray alloc] init];

4

除了忘记为NSMutableArray分配内存外,您的NSLog格式也不正确。运行应用程序时会导致崩溃。需要进行以下更改:

您需要添加:

self.kpiStorage = [[NSMutableArray alloc] init];

将您的NSLog更改为以下内容:

NSLog(@"kpistorage has:%d", [self.kpiStorage count]);

0

如果您未使用ARC,请确保在项目中不会创建内存泄漏。因此,更好的方法是像这样分配

NSMutableArray *array = [[NSMutableArray alloc] init];
self.kpiStorage = array;
[array release];

养成一个习惯,不直接执行以下操作:

self.kpiStorage = [[NSMutableArray alloc] init];

在这种情况下,您的属性的保留计数增加了2。如需更多信息,您可以学习保留属性时的内存泄漏


如果是属性,请将其定义为强类型。 - Bablu Joshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接