2010-02-09 3 views
1

나는이 :주연 : withObject : waitUntilDone

: 나는 경고를 받고 있어요

[self performSelectorOnMainThread:@selector(refreshView:) withObject:someBoolValue waitUntilDone:NO]; 

을 :

BOOL someBoolValue = ... //some code returning BOOL 

내가 호출 할 때

다른 크기의 정수에서 포인터로 캐스트

이것에 대한 힌트가 있습니까?

답변

5

id (개체에 대한 포인터)이 있어야하는 "원시"부울 값을 전달 중입니다.

[self performSelectorOnMainThread: @selector(refreshView:) 
     withObject:someBoolValue 
     waitUntilDone:NO] 

더 나은

[self performSelectorOnMainThread:@selector(refreshView:) 
     withObject: [NSNumber numberWithBool: someBoolValue] 
     waitUntilDone: NO] 

당신은 숫자 객체에 boolValue 방법을 전송하여 refreshView: 방법의 부울 값을 추출 할 수 있어야한다 :

Java 또는 C#과 달리
if([myWrappedBoolean boolValue]) { 
    ... 
} 

, 목적 -C는 원시 값에서 객체로의 "autoboxing"을 가지고 있지 않습니다. BOOL 형식은 컴파일러에서 두 번째 인수에 대한 포인터가 performSelectorOnMainThread:withObject:waitUntilDone:에 있어야하기 때문에 표시되는 오류 메시지가 나타나는 작은 정수 유형입니다.

+0

설명해 주셔서 감사합니다! 이제 알겠다. 관련 질문이 하나 더 있습니다 : refreshView : 메소드에 어떤 매개 변수 유형을 넣어야합니까? BOOL일까요? 아니면 이드? – Jakub

+0

Definetly'id' 또는 더 구체적인 유형 (답변에 주어진 지시 사항을 따르는 경우 'NSNumber'). autoboxing도 자동 * un * 권투를 의미하지 않습니다. – Dirk

+0

감사! 그것은 합리적으로 보인다. – Jakub

관련 문제