自定义类的视图

时间:2010-07-05 17:59:28

标签: objective-c

我有以下课程:

@interface Gamer {
...
}

+(id) CreatePlayer;
@end

@implementation Gamer

+(id) CreatePlayer
{
  return [[[self alloc] init]autorelease];
}
@end

我需要在另一个类中使用Gamer作为实例变量。 例如:

@interface Layer{
  Gamer * mCenterGamer;
}
@end
@implementation
-(void) init{
   mCenterGamer =  [Gamer CreatePlayer];
}
-(void) exampleFuncForUseGamer{
   [mCenterGamer ...]// some methods of the Gamer class
}
@end

这是对的吗? (我认为autorelease在退出init函数后释放了mCenterGamer)

1 个答案:

答案 0 :(得分:0)

您需要保留mCenterGamer(并确保在Layer的-dealloc方法中释放它)。此外,-init需要id作为其返回类型:

- (id)init {
    if (self = [super init])
       mCenterGamer = [[Gamer CreatePlayer] retain];

    return self;
}

- (void)dealloc {
    [mCenterGamer release];
    [super dealloc];
}

你的-exampleFuncForUseGamer应该没问题,具体取决于你在那里做的事情。