У меня вопрос о том, как работают переменные экземпляра и когда использовать @property. Вот пример файла интерфейса, который я работаю сВопрос о ivars и @ property на iPhone
@interface PackageModel : NSObject {
NSString *tracking;
NSString *carrier;
NSString *status;
NSMutableDictionary *events;
// Connection ivars
NSMutableData *receivedData;
// Parsing ivars
int tagLevel;
NSMutableArray *tagTree;
NSString *parentTag;
NSString *currentTag;
}
@property (nonatomic, retain) NSMutableData *receivedData;
- (id)initWithTrackingString:(NSString *)string;
- (void)getPackageDataWithEvents;
- (void)printMe;
@end
Как получить доступ к ним в коде файла. Могу ли я получить доступ к трекинг, носитель и статус в методах этого класса, просто используя что-то вроде
tracking = [[NSString alloc] initWithString:@"Hello World"];
Кроме того, что нужно положить в dealloc переменные? Только переменные, которые я имею в @ свойстве/@ синтезируют? Или мне нужно освободить все переменные экземпляра в методе dealloc.
Я просто ищу некоторые разъяснения о том, как переменные экземпляра работают в Objective-C. Благодарю.
Теперь, для currentTag и parentTag, которые я определил там, я установлю их в методах делегатов NSXMLParser по currentTag = qName. Мне не нужно выпускать их в dealloc, потому что они просто указывают на эти другие строки, правильно? Но, если бы я сделал их @property, мне нужно было бы отпустить их правильно? – rickharrison
rickharrison: '@ property' не имеет никакого отношения к тому, принадлежит ли вам объект. Не имеет значения, как вы пришли к нему; если вы владеете им, вы должны его освободить. См. Правила управления памятью: http://developer.apple.com/mac/library/documentation/General/Conceptual/DevPedia-CocoaCore/MemoryManagement.html –