문제

Objective-C에서는 블록을 @synchronized 건설하다. 다음과 같이 보일 것입니다.

@synchronized (self) {
    // Do something useful
}

그러나 나는 정확히 무엇을 궁금합니다 self 정적 방법이있을 때를 참조합니다 (+ 대신에 -). 나는 Apple Docs를 살펴 보려고 노력했고, 그것들은 그것이 괜찮다는 것을 암시하지만 실제로 그것을 설명하지는 않습니다. 나는 그것이 작동한다는 것을 알고 있습니다. 나는 그것이 무엇을 의미하는지 궁금합니다.

도움이 되었습니까?

해결책

self 클래스 내부 (static) 메소드는 클래스 객체를 나타냅니다.

다른 팁

대상 c self 컨텍스트에 따라 결정됩니다. 인스턴스 방법에서는 인스턴스가 호출됩니다. 정적 방법에서는 클래스 객체 자체가 될 것입니다 (즉, 결과는 [self class] 인스턴스 방법에서)

위의 답변을 사용하면 @synchronized (self)를 사용하여 인스턴스 메소드를 호출하고 다른 스레드가 @synchronized (self)를 사용하여 클래스 메소드를 호출하면 두 통화 사이에 동기화가 발생하지 않기 때문에 다른 스레드가 클래스 메소드를 호출하는 경우. 동기화를 위해 다른 객체를 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top