==
পয়েন্টার তুলনা করার কারণে কাজ করার কারণ। আপনি যখন কোনও ধ্রুবক NSString
ব্যবহারের সংজ্ঞা দেন @""
, সংকলকটি রেফারেন্সটিকে আলাদা করে দেয়। যখন আপনার কোডে অন্য স্থানে একই ধ্রুবকগুলি সংজ্ঞায়িত করা হয়, তখন তারা সকলেই মেমরির একই প্রকৃত অবস্থানের দিকে নির্দেশ করবে।
NSString
উদাহরণগুলির সাথে তুলনা করার সময় , আপনাকে এই isEqualToString:
পদ্ধতিটি ব্যবহার করা উচিত :
NSString *myString1 = @"foo";
NSString *myString2 = @"foo";
NSString *myString3 = [[NSString alloc] initWithString:@"foo"];
NSLog(@"%d", (myString2 == myString3))
NSLog(@"%d", (myString1 == myString2));
NSLog(@"%d", [myString1 isEqualToString:myString2]);
NSLog(@"%d", [myString1 isEqualToString:myString3]);
[myString3 release];
সম্পাদনা করুন:
NSString *myString3 = [[NSString alloc] initWithString:@"foo"];
// this is same with @"foo"
initWithString:
আর কোনও নতুন রেফারেন্স তৈরি করে না, আপনার প্রয়োজন হবে initWithFormat
,
NSString *myString3 = [[NSString alloc] initWithFormat:@"foo"];
myString3
ধ্রুবক একটি পয়েন্টার তৈরি করবে"foo"
, তাই সাধারণত, এই তিনটি পরিবর্তনশীল একই মেমরি অবস্থান নির্দেশ করবে। এটি জিসিসি এবং ঝনঝন উভয়ের জন্যই সত্য (ডিফল্ট বিকল্প সহ)। এটি সংকলনের চেষ্টা করুন: gist.github.com/578568