SORU
13 EYLÜL 2010, PAZARTESİ


Anlayış NSString karşılaştırma

Her ikisi de aşağıdaki karşılaştırmaları doğru olarak değerlendirin:

1)

@"foo" == @"foo";

2)

NSString *myString1 = @"foo";
NSString *myString2 = @"foo";
myString1 == myString2;

Ancak, kesinlikle NSStrings iki olamaz eşitlik operatörü ile olduğu zamanlar vardır, ve [myString1 isEqualToString:myString2] yerine gereklidir. Birisi bu biraz ışık tutabilir?

CEVAP
13 EYLÜL 2010, PAZARTESİ


== işe yaramasının sebebi işaretçi karşılaştırma dolayıdır. Ne zaman seni NSString sabit @"", derleyici kullanarak başvuru uniquifies tanımlayın. Aynı sabitler kodunuzda başka yerlerde tanımlandığında, bellekte aynı gerçek konumunu işaret eder.

NSString örnekleri karşılaştırırken, isEqualToString: yöntemi kullanmanız gerekir:

NSString *myString1 = @"foo";
NSString *myString2 = @"foo";
NSString *myString3 = [[NSString alloc] initWithString:@"foo"];
NSLog(@"%d", (myString2 == myString3))  //0
NSLog(@"%d", (myString1 == myString2)); //1
NSLog(@"%d", [myString1 isEqualToString:myString2]); //1
NSLog(@"%d", [myString1 isEqualToString:myString3]); //1
[myString3 release];

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bobinire

    bobinire

    24 EYLÜL 2006
  • lissaandbeauty

    lissaandbeau

    24 Aralık 2011
  • whatever

    whatever

    30 EYLÜL 2005