"方法调用的参数太多,预期为1,有2个",但实际上只有1个

Seg*_*gev -1 cocoa-touch objective-c ios

这段代码工作正常:

NSString *titleForMail =[NSString stringWithFormat:@"text %@",_infoTFProduct.text];
        [mailCont setSubject:titleForMail];
Run Code Online (Sandbox Code Playgroud)

虽然这段代码给了我上面的错误.

[mailCont setSubject:@"yo! %@", _infoTFProduct.text];
Run Code Online (Sandbox Code Playgroud)

我很想知道为什么.

截图

Ale*_*yne 5

因为,[mailCont setSubject:@"yo! %@", _infoTFProduct.text];显然有两个论点?实际上,逗号表示第一个参数的结束和第二个参数的开始.

该语法对于插值字符串不是通用的.stringWithFormat:并且NSLog我相信是可以处理这种说法格式的唯一案例.

因此,接受字符串的方法很少也会接受带插值参数的字符串.如果要将值插入字符串并在任何可以使用字符串的地方使用它,则必须先使用[NSString stringWithFormat:].