자식 노드가 여러 개인 사용자 정의 CCNode
클래스가 있으며 일부 사용자 정의 전환을 만들기 위해 자식에 대한 참조를 유지하려고합니다. 사용자 정의 클래스는 다음과 같이 보일 것이다 아이 배경 예를 들어Cocos2d에서 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
문제는이이 메모리에서 해제되고 있지 않습니다 노드 배경으로 ARC에 사이클을 유지하는 원인이다.
다음과 같은 질문을 던집니다. 처음부터 @property가 필요합니까? 일반 (void) setThisAndThadNode : (CCNode *) theNode; __weak CCNode * _thisAndThat; 인터페이스에서 선언. – YvesLeBorg
컴파일러가 약한 속성이나 인스턴스 var가 예측할 수없는 nil로 설정 될 수 있다고 말하면서 불평합니다. 메소드가 실행되는 동안 자식 노드에 대한 참조를 보유 할 수있는 __strong 로컬 변수를 만들 수 있습니다. – rraallvv
문제가되는 코드 (문맥에 대한 주변 정보)와 정확한 오류 메시지로 새로운 질문을 할 수 있습니까? 일반적으로 컴파일러는 제 대답의 첫 번째 코드 조각과 같은 것이 아니라면 불평해서는 안됩니다 – LearnCocos2D