【问题标题】:Unable to send a message to an Objective C method with multiple parameters [duplicate]无法向具有多个参数的Objective C方法发送消息[重复]
【发布时间】:2014-04-23 04:52:22
【问题描述】:

我无法向具有多个参数的 Objective C 方法发送消息。该方法有两个参数,一个 NSString 对象和一个布尔变量。当我编辑我的方法代码时,我可以成功地进行调用,因此它只有其中一个参数,但不能同时具有这两个参数。我没有得到任何编译错误。当我运行程序时,程序停止并且我在方法调用处得到一个断点,但是 XCode 调试器没有提供任何关于它为什么停止在那里的额外信息。然后我可以选择继续运行该程序,它按预期执行。我目前正在从同一类的另一个方法中调用该方法。我曾尝试直接从 main 调用该方法,但有同样的问题。我在 saySomething 方法中尝试了许多更改,包括只注释掉方法的全部内容,但我的程序仍然在方法调用处停止。我的接口和实现文件如下。感谢您提供的任何帮助!

编辑:我还按要求添加了 main 中的代码。

@interface XYZPerson : NSObject

- (void) sayHello;
- (void) saySomething:(NSString *)whatToSay loudly:(Boolean)toYell;

@end

@implementation XYZPerson

- (void)sayHello
{
    NSString *greeting = @"Hello, World!";
    [self saySomething:greeting loudly:YES];
}

- (void)saySomething:(NSString *)whatToSay loudly:(Boolean)toYell
{
    NSString *whatToSayEdited = whatToSay;

    if (toYell == YES) {
        whatToSayEdited = [whatToSay uppercaseString];
    }

    NSLog(@"%@", whatToSayEdited);
}

@end

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        // insert code here...

        XYZPerson *somePerson = [[XYZPerson alloc] init];

        [somePerson sayHello];
    }
    return 0;
}

【问题讨论】:

  • 你能显示你如何调用它的代码吗?
  • 你得到了一个断点?那不是错误。一切都很好。
  • 好的。当程序停止执行并在方法调用处列出断点时,我发现出了点问题。这不是问题吗?
  • 不,它只是一个调试工具。
  • 听起来你在处设置了断点

标签: objective-c


【解决方案1】:

听起来你设置了一个断点

if (toYell == YES) {
    whatToSayEdited = [whatToSay uppercaseString];
}

代码块,这可以解释为什么没有第二个参数它运行顺利,但是当你设置两个参数时停止。

如果在您告诉它继续后它继续正常运行,这不是错误,而实际上只是一个断点。在编辑器的左侧查看行号所在的位置。断点显示为蓝色块状箭头。

【讨论】:

  • 谢谢 - 是的,看起来就是这样。我删除了断点,程序运行不停。为什么要创建该断点有一个简单的答案吗?
  • 请记住,断点只会在 XCode 中调试时停止您的程序,它不会在与 Xcode 分开运行时暂停您的应用程序。通过单击编辑器中的行号可以轻松创建断点。我认为所有 iOS 开发人员都遇到过意外创建断点的情况。
  • 啊,好吧,那我一定是不小心点击了行号。感谢您的帮助!
  • 你的意思是你偶然发现了有史以来最重要的调试工具。我非常非常强烈地建议你学习调试代码,因为我可以向你保证你会需要它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 2018-06-08
相关资源
最近更新 更多