我有以下课程:
@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)
答案 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
应该没问题,具体取决于你在那里做的事情。