2012-08-25 40 views
0

我做了一个getter做到这一点:什么是使用CCSpriteBatchNode进行延迟加载的正确方法?

@synthesize sheet = _sheet; 

-(CCSpriteBatchNode *)sheet { 
    if (!_sheet) { 
     _sheet = [CCSpriteBatchNode batchNodeWithFile:@"image.png" capacity:500]; 
     [self addChild:_sheet]; 
    } 
    return _sheet; 
} 

但我的问题是,什么是声明这个属性的正确方法?

在我的界面

,我已经做了:

@property (readonly, unsafe_unretained) CCSpriteBatchNode *sheet; 

因为我觉得,因为这是“只读”,我并不需要一个强引用它 - 但后来我糊涂了,并以为 - - 等待是否意味着它有可能被释放,这应该是强大的?我用unsafe_unretained而不是弱到有iOS4的支持...

回答

0

“只读”属性意味着没有setter函数修改属性的值。这与“强”与“弱/不安全”不相关。

你应该申报财产“强”,以确保当有人使用它的对象不会被释放。

你的具体情况,可能self保留_sheet因为[self addChild:_sheet],所以_sheet将至少只要self存在。但是,如果你财产申报为“unsafe_unretained”和其他类通过

CCSpriteBatchNode *theSheet = yourWhatEver.sheet; 

得到值则theSheet将尽快yourWhatEver被释放是一个无效的指针。

相关问题