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