3

我想,我犯了一个非常基本的错误,但我正在使用 anNSMutableArray并且这不会以某种方式添加对象,我正在按照它的方式发送它。我有一个属性(并合成)

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

4

3 回答 3

14

确保为 kpiStorage 分配了内存。

self.kpiStorage = [[NSMutableArray alloc] init];
于 2013-02-23T16:47:22.217 回答
4

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

您将需要添加

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

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

NSLog(@"kpistorage has:%d", [self.kpiStorage count]);
于 2013-02-23T16:51:23.473 回答
0

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

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

养成不直接做的习惯

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

在这种情况下,您的财产的保留计数增加 2。为了进一步阅读,您可以在保留财产时防止内存泄漏

于 2013-02-23T18:47:45.393 回答