NSMutableArray不添加对象

时间:2013-02-23 16:40:39

标签: ios objective-c count nsmutablearray

我认为,我正在做一个非常基本的错误,但我使用的是NSMutableArray,而且这种方式不会添加对象,我正在发送它。我有一个属性(和合成)

@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)。我误解了什么?

3 个答案:

答案 0 :(得分:14)

确保为kpiStorage分配内存。

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

答案 1 :(得分:4)

除了忘记为NSMutableArray分配内存之外,您的NSLog格式也是错误的。运行它时,您的应用程序将崩溃。需要进行以下更改

您需要添加

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

并将您的NSLog更改为以下

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

答案 2 :(得分:0)

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

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

养成不直接做的习惯

  

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

在这种情况下,你的财产的保留计数增加2.为了进一步阅读你可以stydy Memory Leak when retaining property