onEnterTransitionDidFinish方法中的NSString值为nil

时间:2014-09-13 16:07:00

标签: ios cocos2d-iphone

我猜它是一个非常基本的记忆概念。但无法弄清楚下面的情况会发生什么。任何见解都会有所帮助。

这可能类似于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
}

1 个答案:

答案 0 :(得分:1)

如果您不使用ARC,那么您需要了解更多有关内存管理的知识。

以下两行:

someString = [[NSString allo]init];
someString = tempString;

应该是:

someString = [tempString copy]; // or [tempString retain];

请务必在[someString release]方法中致电dealloc

BTW - 你没有使用房产。 someString被声明为实例变量,而不是属性。