Я хочу спросить, выделил ли я переменную экземпляра для частного использования в этом классе, должен ли я немедленно опубликовать ее на сайте, или я могу зависеть от функции dealloc . (потому что, может быть, мне понадобится другая функция)?
//Player.h
@interface Player : NSObject
{
NSMutableArray * objectArray;
}
- (void)awake;
- (void)add;
@end
//Player.m
@implementation Player : NSObject
{
-(id) init {
self = [super init];
if (self != nil ){
[self awake];
[self add];
}
return self;
}
- (void) awake {
objectArray = [[NSMutableArray alloc] init]; //is it cause leakage?
[objectArray addObject:@"foobar"];
}
- (void) add {
[objectArray addObject:@"foobar2"];
}
- (void) dealloc {
[objectArray release];
[super dealloc];
}
}
@end
или я должен использовать свойство для установки objectArray iVar?
//Player.h
@interface Player : NSObject
{
NSMutableArray * objectArray;
}
@property (nonatomic,retain)NSMutableArray* objectArray;
- (void)awake;
- (void)add;
@end
//Player.m
@implementation Player : NSObject
{
-(id) init {
self = [super init];
if (self != nil ){
[self awake];
[self add];
}
return self;
}
- (void) awake {
self.objectArray = [[NSMutableArray alloc] init autorelease]; //cause leakage?
[objectArray addObject:@"foobar"];
}
- (void) add {
[objectArray addObject:@"foobar2"];
}
- (void) dealloc {
[objectArray release];
[super dealloc];
}
}
@end
если они оба не вызывают утечку, какой тип я должен использовать?
я должен всегда устанавливать iVar свойство и обращаться к iVar значение с self , даже если я только хочу использовать его в этом классе?