我猜它是一个非常基本的记忆概念。但无法弄清楚下面的情况会发生什么。任何见解都会有所帮助。
这可能类似于Problems with NSString inside viewWillDisappear
但我想知道为什么需要@property。如果不拿@property我们怎么做呢。请提供一些内部视图。
in .h我有NSString * someString
<。> in .mm(这是我的非ARC cocos2d + box2d游戏场景)-(id)initWithString:(NSString *)tempString
{
if(self = [super init])
{
someString = [[NSString allo]init];
someString = tempString;
}
return self;
}
-(void)onEnterTransitionDidfinish
{
[super onEnterTransitionDidfinish];
NSLog("The String is %@",someString);//Becomes nil here
}
-(void)printString
{
NSLog(@"The String is %@",someString);//This works fine
}
答案 0 :(得分:1)
如果您不使用ARC,那么您需要了解更多有关内存管理的知识。
以下两行:
someString = [[NSString allo]init];
someString = tempString;
应该是:
someString = [tempString copy]; // or [tempString retain];
请务必在[someString release]
方法中致电dealloc
。
BTW - 你没有使用房产。 someString
被声明为实例变量,而不是属性。