我正在练习如何在Objective-C中使用选择器 在这段代码中,我试图比较两个字符串:
int main (int argc, const char * argv[])
{
@autoreleasepool
{
SEL selector= @selector(caseInsensitiveCompare:);
NSString* str1=@"hello";
NSString* str2=@"hello";
id result=[str1 performSelector: selector withObject: str2];
NSLog(@"%d",[result boolValue]);
}
return 0;
}
但它打印为零。为什么?
编辑:
如果我将str2更改为@“hell”,我会得到一个EXC_BAD_ACCESS。
答案 0 :(得分:6)
performSelector:
状态的文档"对于返回除对象以外的任何内容的方法,请使用NSInvocation"。由于caseInsensitiveCompare:
返回{{1}而不是一个对象,你需要创建一个NSInvocation
,这是更多的参与。
NSInteger
答案 1 :(得分:1)
试
NSString* str1=@"hello";
NSString* str2=@"hello";
if ([str1 caseInsensitiveCompare:str2] == NSOrderedSame)
NSLog(@"%@==%@",str1,str2);
else
NSLog(@"%@!=%@",str1,str2);