OBJC_MSGSEND NSString stringWithFormat中的错误

时间:2009-11-11 22:35:10

标签: iphone objective-c

我在测试iPhone0应用程序中有一个按钮,它根据URL中的GET ID打开StackOverflow问题。每次按下按钮,页面都应重新加载到下一个问题。

我通过最初设置为1的int count计算GET ID,并按下每个按钮递增。

使用以下网址对网址进行硬编码:NSString *urlAddress=[NSString stringWithFormat:@"http://stackoverflow.com/questions/1"];

有效,但显然不允许使用计数器。当我尝试用以下方式实现计数器时:

NSString *urlAddress =[NSString stringWithFormat: @"http://stackoverflow.com/questions/%@", count];

程序因OBJC_MSGSEND错误而失败。为什么这行代码不起作用?

*我已经调试过,这是导致上述错误的第一行。

感谢。

1 个答案:

答案 0 :(得分:4)

count不是对象。您需要使用%d,而不是%@。使用%@作为格式说明符意味着“将description方法发送到我作为参数提供的对象”。由于您的变量count实际上不是对象,因此您无法向其发送任何消息。

您的代码(缩写为更好地展示示例),如下所示:

NSString *s = [NSString stringWithFormat:@"something/%@", count];

这几乎相当于:

NSString *s = [NSString stringWithFormat:@"something/%@", [count description]];

可以想象,运行时无法做出正面或反面(毕竟countint)。使用这种格式将起作用:

NSString *s = [NSString stringWithFormat:@"something/%d", count];