detachNewThreadSelector
ref을 사용하여 toTarget
자기를 사용하여 새 스레드를 만들고 있습니다.detachNewThreadSelector로 만든 폴링 스레드를 종료하는 방법은 무엇입니까?
스레드의 목적은 움직임을 폴링하고 적절하게 이미지를로드하는 것입니다. 스레드는 객체 b에 설정된 기본 스레드에서 원자 bool이 true로 설정된 경우에만 반복되고 종료됩니다.
문제는합니다 (detachNewThreadSelector 기준에서)이 기인한다 :
발매 스레드가 항상 폴링하기 때문에 항상 (최소) 보유 계수가 1입니다. 따라서개체 aTarget 및 anArgument가 분리 스레드를 실행하는 동안 유지되고, 그 다음 제 객체를 의미합니다
dealloc
은 호출되지 않습니다.
내 질문은 : 폴링 스레드의 존재를 고려하여 내 개체를 어떻게 dealloc 할 수 있습니까?는
지금 내가 가진 유일한 아이디어는 파괴 할 수있는 물체를 기대 내가 을 거라고 모든 곳에서 호출 될 최종 스레드 부울을 설정하는 객체의 destroyThread 기능을 만드는 것입니다. 이 오류가 발생하기 쉬운 것, 더 나은 솔루션이 있습니까?
미리 감사드립니다.
업데이트
나는 다른 해결책에 대한 아이디어가 있었다 - 스레드에서 나는 유지 카운트가 하나 인 경우 감지 - 그 다음 일을 내가 만약 스레드 개체가 살아 유지하는 것을 알고, 그래서 루프를 중단 dealloc이 호출됩니다. 이것은 강력한 솔루션입니까?
정말 수동으로 스레드를 종료하는 아이디어를 싫어합니다. 왜냐하면 릴리스가 내 개체에 호출 될 때마다 코드를 수정할 필요가 있음을 의미하기 때문입니다. 그러나 다른 조언을 위해 투표했습니다. 다른 솔루션에 대한 아이디어가있었습니다 - 보유 개수가 1인지 여부를 감지하는 스레드에서 - 스레드가 객체를 활성 상태로 유지한다는 것을 알고 있으므로 루프를 중단하고 dealloc이 호출됩니다. 그 해결책에 대해 어떻게 생각하세요? – CiscoIPPhone
수정 사항을 참조하십시오 ...... –
도움 주셔서 감사합니다. Rob! – CiscoIPPhone