我正在研究Stanford iPhone class,我无法弄清楚为什么我会收到编译器警告。我假设我需要将我的对象转换为NSString,但是当我尝试这样做时我收到错误。代码运行并给我预期的输出,但警告困扰我。
NSLog(@"lowerCaseString is: %@", [object lowercaseString]);
运行警告:'NSObject'可能无法响应'-lowerCaseString'
NSLog(@"lowerCaseString is: %@", [(NSString)object lowercaseString]);
这会引发错误:转换为请求的非标量类型
答案 0 :(得分:21)
我相信这会做你需要的:
NSLog(@"lowerCaseString is: %@", [(NSString *)object lowercaseString]);
注意我刚刚在你的第二行代码中加了一个*来创建指向NSString的指针。希望它有所帮助!
亚当
答案 1 :(得分:3)
为什么对象声明为NSObject,如果它应该是NSString?如果您打算在其上调用NSString方法,请将其声明为NSString或将其保留为id。那你就不会有错误了。