我在做一個練習來學習如何在Objective-C中使用選擇器。
在這段代碼中,我試圖比較兩個字符串:通過選擇器比較兩個字符串:意外的結果
int main (int argc, const char * argv[])
{
@autoreleasepool
{
SEL selector= @selector(caseInsensitiveCompare:);
NSString* [email protected]"hello";
NSString* [email protected]"hello";
id result=[str1 performSelector: selector withObject: str2];
NSLog(@"%d",[result boolValue]);
}
return 0;
}
但它打印zero.Why?
編輯:
如果我將str2更改爲@「hell」,我得到一個EXC_BAD_ACCESS。
尼斯answer.Just一個問題:是正常的,它可能會返回18446744073709551615(比較@「你好」和@「地獄」)? – 2012-07-13 21:23:52
不,這是不正常的,你是如何得到這個數字?你複製並粘貼了我的代碼,然後將其更改爲'hell'?我得到的唯一值是'1','0'和'-1'。 – Joe 2012-07-13 21:25:29
相同的代碼,但只是它的格式錯誤:我寫了%lu而不是%d(修復xcode警告)。將它更改爲%ld並且它可以正常工作。謝謝。 – 2012-07-13 21:33:24