我认为,我正在做一个非常基本的错误,但我使用的是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)。我误解了什么?
答案 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