W mojej aplikacji jest mechanizm, który wymaga, aby w pewnym momencie dwa były takie same, aby coś zrobić; z jakiegoś powodu, kiedy porównuję te dwa, nawet jeśli są one takie same, wciąż tego nie rozpoznają. Kod jest coś takiego:Porównaj dwa NSStrings
NSString * aString = [self someMethodThatGetsAString];
NSString * bString;
BOOL areStringsTheSame = NO;
while (areStringsTheSame != YES) {
bString = [self someMethodThatTakesNSStringsFromAnArrey];
if (bString == aString) {
areStringsTheSame = YES;
{ }
nawet włożono NSLog()
i upewnić się, że w pewnym momencie były takie same (io ile wiem, to co stoi na ==
...), ale nadal nie dostał się do if
, aby zmienić wartość BOOL
.
Czy istnieje inny sposób na porównanie? Czy czegoś brakuje?
Prawdziwe. I zagłębić się w zasady OOP (dwa obiekty o tych samych właściwościach niekoniecznie są tymi samymi obiektami). W przeciwnym razie będziesz napotykał ten problem każdego dnia swojego życia programisty :-) – vstrien
Najwyraźniej '==' działa tak samo, jak porównywanie ciągów znaków, ze względu na sposób, w jaki Objective-C używa zmiennych łańcuchowych. Na przykład, zadeklaruj ciąg A i ciąg B, i wykonaj '==', a przekonasz się, że oba są przechowywane w tym samym adresie. –