【问题标题】:Creating NSArray - EXC_BAD_ACCESS?创建 NSArray - EXC_BAD_ACCESS?
【发布时间】:2012-11-14 01:59:40
【问题描述】:

当我尝试创建 NSArray purchasedTimeArray 时,我遇到了崩溃 EXC_BAD_ACCESS

NSString *blank = @"";
NSArray *purchasedTimeArray = [[NSArray alloc] initWithObjects:
                                   timeRemainingTitle, blank, @"imagename.png", blank, description, 4, nil];

是的,timeRemainingTitledescription 仍然存在于内存中。它们都是 NSString。

【问题讨论】:

  • '4' 不是一个对象,它是一个整数。您需要使用“NSNumber”将“4”包裹在其中。
  • 在新的objective-c语法中它是@4
  • 男人。完全忽略了这一点。谢谢。

标签: iphone ios nsarray out-of-memory


【解决方案1】:

使用新的 Objective-C 语法:

NSArray *purchasedTimeArray = @[ timeRemainingTitle, blank, @"imagename.png", blank, description, @4 ];

两个好处:

  1. 更容易编写。
  2. 不需要nil 终止符,如果其他值之一的值是nil,则所有对象仍会在数组中结束。

如 cmets 中所述,@4 语法转换为 [NSNumber numberWithInt:4]

【讨论】:

  • 哇。对我不了解新语法感到羞耻。谢谢。
  • 我强烈推荐观看 WWDC 2012 第 405 场会议。这涵盖了现代 Objective-C 的所有新功能 - 很多很棒的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多