Вопрос

В Objective-C вы можете объявить блок как синхронизированный с некоторым объектом, используя @synchronized сконструировать.Это выглядело бы примерно так:

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

Однако мне любопытно, что именно self имеется в виду, когда у вас есть статический метод (+ вместо того , чтобы -).Я попытался просмотреть документы Apple, и они ссылаются на то, что все в порядке, но на самом деле ничего не объясняют.Я знаю, что это работает, мне просто любопытно, что это значит.

Это было полезно?

Решение

self внутри класса (статический) метод ссылается на объект класса.

Другие советы

В Objective-C self определяется контекстом.В методе экземпляра это был бы вызываемый экземпляр.В статическом методе это был бы сам объект класса (т.е.в результате [self class] в методе экземпляра)

Учитывая приведенные выше ответы, просто имейте в виду, что если один поток вызывает метод экземпляра, используя @synchronized (self), а другой поток вызывает метод класса, используя @synchronized (self), никакой синхронизации между двумя вызовами не произойдет, потому что они используют разные объекты для синхронизации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top