2013-07-02 1 views
1

다음 코드를 고려 - 분명히 비 ARC : performSelector에서 시스템에서 객체를 유지합니까 : onThread : withObject : waitUntilDone : 대기하지 않을 때?

. 
. 
. 
NSString* someValueToSend= [NSString alloc] [email protected]"Send me! Will I survive?"]; 

if([delegate respondsToSelector:@selector(giveMeYourString:)]) 
{ 
    [delegate performSelector:@selector(giveMeYourString:) onThread:someOtherThread withObject:someValueToSend waitUntilDone:NO]; 
} 
[someValueToSend release]; 
. 
. 
. 

는 응용 프로그램에서 일어나고있는 다른 무엇에 따라, 대리자 또는 someValueToSend이 출시되기 전에 그 선택을 실행에 주위를하지 않을 수있다. "시스템"이 대상에 대해 "예의"를 가지고 있습니까?

그렇지 않으면 내가 차단할 수없는 상황에 놓여 있습니다. 누출없이 경계를 넘어 값을 보내기위한 좋은 전략은 무엇입니까? Autorelease?

나는 개체가 유지되는 것을 특징으로 다른 곳에서 참조를 발견했다,하지만 난 어떤 입력이 평가

설명서의 것을 .... 보지 못했어요.

답변

3

예, 시스템에서 개체를 유지합니다.

그리고, 아니요, autorelease결코은 스레드 경계를 넘어 오브젝트가 해제되지 않도록 보호하는 데 사용됩니다. 기술적으로 동기식 경우에는 가능하지만 그렇게하지는 마십시오.

+0

빠른 응답을 보내 주셔서 감사합니다. – GTAE86