【问题标题】:Objective-C crash issue: NSInvalidArgumentExceptionObjective-C 崩溃问题:NSInvalidArgumentException
【发布时间】:2012-01-31 21:28:42
【问题描述】:

我卡在里面很久了,但是找不到解决办法。这是我的代码:`

NSLog(@"[tempArray retainCount]: %d",[tempArray retainCount]);    
tempArray = [[NSMutableArray alloc] initWithArray:[allRemainingProductsDictionary objectForKey:[[allRemainingProductsDictionary allKeys]objectAtIndex:counter]]]; 

NSMutableDictionary *tempDictionary = [[NSMutableDictionary alloc] init];    
[tempDictionary setObject:productName forKey:@"name"];        
[tempArray release];

我收到this 报告的 NSException 崩溃。请帮忙。

【问题讨论】:

  • 您实际上可以复制并粘贴崩溃日志,而不是制作屏幕截图。
  • 我的格式不太好......我肯定会改进..
  • 您是否想从您发布的广告杂乱的链接中获利?

标签: iphone objective-c ios memory-management xcode4


【解决方案1】:

发送到您的 NSDictionary 实例的方法 getObjects:range: 是一个 NSArray 方法。

您可能正在尝试向您的 initWithArray 传递 NSDictionary 而不是 NSArray

【讨论】:

    【解决方案2】:

    NSLog 条目是否显示?如果没有,那是因为 tempArray 没有响应 retainCount。如果您将 Xcode 4.2 与 ARC for iOS 5 一起使用,则无需担心 releaseretain 的任何事情(您应该这样做,除非您有旧代码)。

    否则,您会在某处向对象发送它不响应的消息。

    【讨论】:

    • 我正在使用 XCode 4。NSLog 条目显示为保留计数 0。
    • 它只是因为你幸运而出现; tempArray 为零。在这种情况下,retainCount 是无用且无关紧要的。
    猜你喜欢
    • 2013-02-04
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2013-02-03
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多