代码之家  ›  专栏  ›  技术社区  ›  TraderJoeChicago

在Xcode上正确调试iPhone应用程序

  •  2
  • TraderJoeChicago  · 技术社区  · 14 年前

    下面这行有错误,你能用肉眼看到吗?

    NSString *title = [sender titleForState:UIControlStateNormal];
    NSString *newText = [[NSString alloc] initWithFormat:"%@ button pressed.", title];
    

    当iPhone模拟器执行这一行时, 没有任何其他信息的崩溃 . 我一定错过了调试方面的东西。控制台什么也没给我看。

    我能找出错误, 我的问题不是这个 . 我的问题是为什么我会在没有Xcode帮助的情况下发生严重的崩溃。毫无头绪,我花了宝贵的5分钟才意识到我的打字错误。

    有什么建议吗?或者在为iPhone编程时,我只需要非常小心打字?

    编辑:我想有些人并没有立即像我一样看到它。错误是字符串常量缺少“@”。所以现在我的问题是为什么Xcode/Simulator没有显示任何类型的错误消息,只是没有任何线索就崩溃了。 我是否缺少调试方面的内容?

    4 回复  |  直到 14 年前
        1
  •  5
  •   VdesmedT    14 年前

    Objective-C不会强烈地验证在编译期间或运行时传递给消息的参数是否是正确的类型。但它应该给你一个警告。这里传递的是C字符串而不是NSstring。因为nsstring是对象(因此使用指针引用),所以您的方法使用它作为指针,而您使用一个简单的字符串来填充它。然后您可能会尝试访问不可访问的内存块…

        2
  •  3
  •   vodkhang    14 年前

    我想你错过了 @ 在“%@按钮按下”之前。 正确的应该是:

    NSString *newText = [[NSString alloc] initWithFormat:@"%@ button pressed.", title];

    所有常量nsstring都应该是 @"SOMETHING HERE";

        3
  •  3
  •   Pablo Santa Cruz    14 年前

    检查编译警告。这就是你所需要的。在你展示的案例中,你会得到一个适当的警告,提醒你在那条线上可能会发生坏事。

        4
  •  1
  •   Stephen Furlani    14 年前

    编译代码时出现以下错误:

    error: cannot convert 'const char*' to 'NSString*' in argument passing
    

    不知道你需要做什么才能让你知道,我在obj-c++工作。

    尝试将“-wall”添加到 "OtherWarningFlags" 在目标的生成设置下。