【问题标题】:NSMutableArray does not add objects [duplicate]NSMutableArray 不添加对象[重复]
【发布时间】:2013-02-09 04:10:45
【问题描述】:

我认为,我犯了一个非常基本的错误,但我使用的是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)。我误会了什么?

【问题讨论】:

  • 在发布您的问题之前,请务必查看出现的相关问题列表。这个问题在过去已经得到了一遍又一遍的回答。
  • 对不起,搜索并没有把我引向这条路
  • 我指的不是搜索。当您输入问题时,SO 会向您显示许多可能相关的问题。在提交问题之前务必检查它们。

标签: ios objective-c count nsmutablearray


【解决方案1】:

确保您为 kpiStorage 分配了内存。

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

【讨论】:

    【解决方案2】:

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

    你需要添加

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      养成不直接做的习惯

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

      在这种情况下,您的属性的保留计数会增加 2。要进一步阅读,您可以 stydy Memory Leak when retaining property

      【讨论】:

      • 如果是属性请设为强类型!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 2013-08-03
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      相关资源
      最近更新 更多