Может кто-нибудь сказать мне, если переменная экземпляра NSString "planetName" должна быть выделена / освобождена мной (как в примере ниже) или это сделано, когда экземпляр класса создается / выделяется?
Насколько я понимаю, int и float не обязательно должны быть, но я не уверен насчет NSString и NSArray ...
@interface PlanetClass : NSObject {
NSString *planetName;
}
- (NSString *)planetName;
- (void)setPlanetName:(NSString *)value;
@end
Вот так ...
- (id) init {
[super init];
planetName = [[NSString alloc] init];
return self;
}
- (void) dealloc {
[planetName release];
[super dealloc];
}
** ---------------------------------- **
РЕДАКТИРОВАТЬ: РЕДАКТИРОВАТЬ: Вот еще одна версия
** ---------------------------------- **
int main(int argc, const char *argv[]) {
// ** Allocated here
PlanetClass *newPlanet_01 = [[PlanetClass alloc] init];
NSString *newPlanetName = [NSString alloc] init];
// ** Set the instance variable pointer here
newPlanetName = @"Jupiter";
[newPlanet_01 setPlanetName:newPlanetName];
// ** Released here
[newPlanet_01 release];
return 0;
}
Тогда бы методы init и dealloc были бы такими ...
- (id) init {
[super init];
return self;
}
- (void) dealloc {
// Always release the current copy of planetName
// pointed to by the class instance.
[planetName release]
[super dealloc];
}
Метод setPlanetName будет выглядеть следующим образом ...
- (void)setPlanetName:(NSString *)newPlanetName {
if (planetName != newPlanetName) {
[planetName release];
planetName = [newPlanetName copy];
}
}
PS: я не использую свойства или синтезирую, я еще не дошел до этого.
ура -gary-