Let’s start with two exotic strings (console output is in the code comments):
NSString* apples = NSGetFrenchWord(); NSString* oranges = NSGetFrenchWord(); NSLog(@"apples == '%@'", apples); //apples == 'café' NSLog(@"oranges == '%@'", oranges); //oranges == 'café'
They look identical, but looks can be deceiving.
NSLog(@"isEqual? %@", [apples isEqual:oranges] ? @"YES" : @"NO"); //isEqual? NO NSLog(@"[apples length] == %lu", [apples length]); //[apples length] == 4 NSLog(@"[oranges length] == %lu", [oranges length]); //[oranges length] == 5

