NSString中的OBJC_MSGSEND错误stringWithFormat
问题描述:
我在测试iPhone0应用程序中有一个按钮,它根据URL中的GET ID打开*问题。每次按下按钮,页面都应该重新加载到下一个问题。NSString中的OBJC_MSGSEND错误stringWithFormat
我通过最初设置为1的int count
保持GET ID的计数,并且每按下一次按钮就增加一次。
硬编码使用的网址:NSString *urlAddress=[NSString stringWithFormat:@"http://*.com/questions/1"];
作品,但显然不允许使用计数器。当我试着使用来实现计数器:
NSString *urlAddress =[NSString stringWithFormat: @"http://*.com/questions/%@", count];
程序无法与OBJC_MSGSEND错误。为什么这行代码不起作用?
*我已调试,这是导致所述错误的第一行。
谢谢。
答
count
不是一个对象。您需要使用%d
,而不是%@
。使用%@
作为格式说明符意味着“发送一个description
方法到我作为参数提供的对象”。由于变量count
实际上不是一个对象,因此无法向其发送任何消息。
您的代码(简称显示的例子更好),看起来是这样的:
NSString *s = [NSString stringWithFormat:@"something/%@", count];
这是(几乎)等价于:
NSString *s = [NSString stringWithFormat:@"something/%@", [count description]];
正如你可以想像,在运行时(count
毕竟是int
)。使用这种格式将工作:
NSString *s = [NSString stringWithFormat:@"something/%d", count];