나는 withObject 매개 변수 값을 변경해야하는 상황에 처해있다. 다음 코드를 가지고 있습니다 :performSelector의 withObject 매개 변수가 호출되기 전에이를 변경합니다!
[self performSelector:@selector(refreshScore:) withObject:self.args afterDelay:7.0];
self.args는 "refreshScore"의 초기 값을 가진 NSString입니다. refreshScore가 트리거 될 때 아래에 표시된 것처럼 매개 변수에 값이있는 경우에만 전달되도록하십시오.
-(void) refreshScore:(NSString *) argument
{
if([argument length] == 0) return;
}
이 작업은 정상적으로 작동합니다. 하지만 CCMenuItemImage가있는 CCMenu가 있습니다. CCMenuItemImage를 클릭하면 self.args = @ ""; (빈). 그러나 refreshScore 메소드에 영향을 미치지 않으며 self.args가 초기 값으로 채워지는 것처럼 동작합니다.
CCMenuItemImage의 선택기가 별도의 스레드에 실행됩니까?
감사합니다! 체크해 보니 선택기 메서드 인 refreshScore가 캐시 된 것이거나 나중에 매개 변수와 함께 처리하기 위해 대기열에 넣은 것처럼 보입니다. 인수 매개 변수 대신 공용 속성을 사용하면 제대로 작동합니다. 감사! – azamsharp