- (id)methodThatReturnsSomething { @synchronized(self) { return nil; } }
내가 엑스 코드에서이 작업을 수행 할 때, 그것은 나에게 경고를 반환합니다동기화 수익 목표 - C
그 코드에 문제가 있습니까 "컨트롤이 void가 아닌 함수의 끝에 도달"?
- (id)methodThatReturnsSomething { @synchronized(self) { return nil; } }
내가 엑스 코드에서이 작업을 수행 할 때, 그것은 나에게 경고를 반환합니다동기화 수익 목표 - C
그 코드에 문제가 있습니까 "컨트롤이 void가 아닌 함수의 끝에 도달"?
하지만
- (id)methodThatReturnsSomething
{
@synchronized(self) {
}
return nil;
}
컴파일러 경고없이 (
self
에 관련된 잠금이 해제 될 때까지 반환을 연기) 같은 효과를 가져야한다.
하지만 무엇을하고 싶습니까? 이런 식으로 @synchronized
을 입력 할 필요가 없습니다.
게시 된 코드의 동기화는 중복되지만 아무런 문제가 없습니다.
@synchronized
블록은 정상적으로 또는 예외를 통해 종료됩니다. 이미 return
문을 사용하고 있으므로 블록 이후의 다른 문구는 필요하지 않습니다.
게시 된 코드는 완벽하게 의미가 있습니다. 단지 불필요한 잠금이 걸리게됩니다. – bbum
@bbum : 사실, 내가 말하고자했던 것. –
컴파일러의 다른 버전/이후 버전에서 수정 된 일부 버전의 컴파일러 버그로 인해 컴파일러가 경고를 표시합니다.
이 경우 예, 정말로 컴파일러 버그가 발생했습니다.
이 동기화는 옵티 마이저에 의해 완전히 제거 될 위험이 있음을 의미합니다. 물론 "문제는 무엇을 해결하고 싶습니까?" –