Я просто хотел бы знать разницу между строками 1 и 2 ниже:
_subtitle = @"Test"; //Line 1
_subtitle = [NSString stringWithFormat: @"Test"]; //Line 2
Если я задал этот вопрос, то это потому, что у меня возникла проблема с использованием MKAnnotation. В приведенном ниже методе я пытаюсь обновить свойство делегата субтитров MKAnnotation (которое является неатомарным, копируемым и доступным только для чтения). Но похоже, что я получил зомби при использовании строки 2 и ничего при использовании строки 1. Итак, мой вопрос: почему?
- (void) initCoordinateWithAddress:(NSString*)address;
{
self.address = address;
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString: address completionHandler:^(NSArray *placemarks,NSError *error)
{
CLPlacemark *place = [placemarks objectAtIndex:0];
_coordinate = place.location.coordinate;
_title = self.address;
_subtitle = @"Test"; //Line 1: don't crash
_subtitle = [NSString stringWithFormat: @"Test"]; //Line 2: crash
//_subtitle = [[NSString stringWithFormat: @"[%.2f,%.2f]", self.coordinate.latitude, self.coordinate.longitude] copy];
_isInit = YES;
[self.customDelegate didCalculateCoordinate: place.location.coordinate forAnnotation: self];
}];
}
На самом деле я уже исправил свою проблему с помощью копирования метода, но я до сих пор не понимаю, в чем разница между строками 1 и 2, если кто-нибудь может помочь мне понять, в чем разница, я буду признателен.
Редактировать:
1- я не использую ARC
2- _subtitle происходит от @synthesize subtitle = _subtitle; И субтитры являются частью протокола MKAnnotation со свойством nonatomic, readonly и copy.
С уважением, Кирилл
_subtitle
? - person JeremyP   schedule 29.05.2013