我有一個定製的CCNode
類,它有一堆子節點,我想保留對子節點的引用,以便進行一些自定義轉換。如何在Cocos2d中使用ARC來保存對ARC子節點的引用
例如,對於孩子的背景自定義類是這樣的:
@interface MyNode : CCNode
@property (nonatomic, strong) CCNode *background;
@end
@implementation
- (void)setBackground:(CCNode *)background {
if (_background) {
[self removeChild:_background];
}
if (background) {
[self addChild:background];
}
_background = background;
}
- (void)runTransition {
if (_background)
[_background runAction:[…]];
}
@end
的問題是,這會導致電弧保留週期與節點的背景從未被從內存中釋放。
它引出了一個問題:你是否首先需要一個@property,而不是一個普通的 - (void)setThisAndThadNode:(CCNode *)theNode;與__weak CCNode * _thisAndThat;在界面中聲明。 – YvesLeBorg 2014-10-30 14:01:50
編譯器抱怨說弱屬性或實例var可能是不可預知的設置爲零,我知道我可以創建一個__strong局部變量來保存方法正在執行時對子節點的引用,是嗎? – rraallvv 2014-10-30 20:49:33
你可以問一個新的問題嗎?這個問題有問題(加上週圍環境)和確切的錯誤信息?通常情況下,編譯器不應該抱怨,除非它像我的回答中的第一個代碼片段 – LearnCocos2D 2014-10-30 21:46:28