无法使用多个参数向Objective C方法发送消息

时间:2014-03-17 19:29:06

标签: objective-c

我无法向具有多个参数的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;
}

1 个答案:

答案 0 :(得分:0)

听起来你在

处设置了断点
if (toYell == YES) {
    whatToSayEdited = [whatToSay uppercaseString];
}

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

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