首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS NSString比較:isEqual: vs isEqualToString: 的區別與選擇

     編輯:程式設計綜合問答

方法簽名

- (BOOL)isEqual:(id)object;           // NSObject 協議,通用相等判斷
- (BOOL)isEqualToString:(NSString *)aString; // NSString 專用,優化字符串比較

核心差異

最佳實踐

  1. 比較兩個NSString:優先用isEqualToString:(語義明確、性能優、編譯檢查)。
  2. 比較未知類型對象:用isEqual:(如NSDictionary鍵比較)。
  3. 避免==:只比較指針地址,內容相同但不同對象返回NO。

示例

NSString *a = @\"hello\";
NSString *b = [NSString stringWithFormat:@\"%@\", @\"hello\"]; // 不同對象
BOOL r1 = (a == b);              // NO
BOOL r2 = [a isEqual:b];         // YES
BOOL r3 = [a isEqualToString:b]; // YES (推薦)

進階:本地化比較

需按語言規則比較(如大小寫、變音符)時,使用:

[a compare:b options:NSCaseInsensitiveSearch range:NSMakeRange(0, a.length) locale:[NSLocale currentLocale]] == NSOrderedSame
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性isEqual:isEqualToString:
參數類型id(任意對象)NSString*(強類型)
類型檢查運行時動態判斷編譯期類型安全
性能略慢(需類型判斷)更快(直接比較字符串內容)
Nil處理[nil isEqual:@\"str\"] → NO[nil isEqualToString:@\"str\"] → NO(安全)