2010-06-23 3 views
3
 
- (id)methodThatReturnsSomething 
{ 
    @synchronized(self) { 
     return nil; 
    } 
} 

내가 엑스 코드에서이 작업을 수행 할 때, 그것은 나에게 경고를 반환합니다동기화 수익 목표 - C

그 코드에 문제가 있습니까 "컨트롤이 void가 아닌 함수의 끝에 도달"?

답변

0
난 당신이 코드에서 수행 할 작업을 이해하지

하지만

- (id)methodThatReturnsSomething 
{ 
    @synchronized(self) { 
    } 
    return nil; 
} 

컴파일러 경고없이 ( self에 관련된 잠금이 해제 될 때까지 반환을 연기) 같은 효과를 가져야한다.

하지만 무엇을하고 싶습니까? 이런 식으로 @synchronized을 입력 할 필요가 없습니다.

+0

이 동기화는 옵티 마이저에 의해 완전히 제거 될 위험이 있음을 의미합니다. 물론 "문제는 무엇을 해결하고 싶습니까?" –

1

게시 된 코드의 동기화는 중복되지만 아무런 문제가 없습니다.
@synchronized 블록은 정상적으로 또는 예외를 통해 종료됩니다. 이미 return 문을 사용하고 있으므로 블록 이후의 다른 문구는 필요하지 않습니다.

+0

게시 된 코드는 완벽하게 의미가 있습니다. 단지 불필요한 잠금이 걸리게됩니다. – bbum

+0

@bbum : 사실, 내가 말하고자했던 것. –

11

컴파일러의 다른 버전/이후 버전에서 수정 된 일부 버전의 컴파일러 버그로 인해 컴파일러가 경고를 표시합니다.

이 경우 예, 정말로 컴파일러 버그가 발생했습니다.