【问题标题】:Why I can't access NSMutable Array in my method?为什么我无法在我的方法中访问 NSMutableArray?
【发布时间】:2012-03-19 08:50:38
【问题描述】:

我尝试在我的方法中将对象添加到我的 NSMutable 数组,但不断出错。如果我在 init 中添加对象,它会起作用。在我尝试执行代码之前,它并没有说有任何问题。

这是在我声明两个数组的#import 内容下方:

NSMutableArray *actions1, *actions2;

这是在初始化中:

actions1 = [NSMutableArray array];

这里我尝试给数组加1:

- (void) storeAction:(int) action {
[actions1 addObject:@"1"];
}

与我之前所说的在 int 中工作的代码相同。

我也希望它存储声明为“action”的 int 值,但这似乎也不起作用。

[addObject:@"%d", action];

【问题讨论】:

  • 关于[addObject:@"%d", action]; - 请详细说明“似乎也不起作用”是什么意思..发生了什么?顺便说一句 - 你为什么不将 int 存储为 NSNumber 对象? ([NSNumber numberWithInt:1])

标签: iphone objective-c methods


【解决方案1】:

或者,在您的头文件中:

@property(nonatomic, strong)NSMutableArray *actions1;

然后在植入文件中:

@synthesize actions1 = _actions1;

然后您可以以self.actions1 的身份访问您的数组。

【讨论】:

    【解决方案2】:

    试试这个代码

    actions1 = [[NSMutableArray alloc] init];
    

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      [NSMutableArray array]; 正在返回一个autoreleased 对象,当您尝试访问它时,它很可能已经被释放。请改用[[NSMutableArray alloc] init];。而且你应该紧急检查memory management rules

      【讨论】:

      • 我更喜欢这个而不是 [[NSMutableArray array] 保留],另外你解释了为什么你的解决方案有效。 +1
      • 谢谢!明天会读。知道为什么这不起作用吗? [addObject:@"%d", action];
      • addObject 接受一个字符串并且不进行格式化。你想要:[array addObject:[NSString stringWithFormat:@"%d", action]];
      • 谢谢。爱乐于助人的人。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多