Я смотрю на пример сети MVC от Apple и обнаружил, что в классе PhotoGallery
автор создал экземпляры и классовые версии метода abandonGalleryCacheAtPath:
:
В строке 139:
+ (void)abandonGalleryCacheAtPath:(NSString *)galleryCachePath
В строке 457:
- (void)abandonGalleryCacheAtPath:(NSString *)galleryCachePath
Кажется, что все, что делает экземпляр метода, - это запись в журнал перед вызовом метода класса следующим образом:
[[QLog log] logWithFormat:@"gallery %zu abandon '%@'", (size_t) self.sequenceNumber, [galleryCachePath lastPathComponent]];
[[self class] abandonGalleryCacheAtPath:galleryCachePath];
Сообщение журнала включает self.sequenceNumber
, который является переменной экземпляра, которая не будет доступна для метода класса.
Пара вопросов:
- Будет ли система автоматически перенаправлять вызовы к нужному методу, например, если другой класс вызовет метод
self abandonGalleryCacheAtPath:abc
, тогда будет выполнена классовая версия метода, и если другой экземпляр вызовет методЗатем будет выполнена версия экземпляра метода? - Как вы думаете, автор реализовал метод экземпляра исключительно для того, чтобы можно было записать значение
sequenceNumber
?Есть ли какие-либо другие конструктивные / технические преимущества такого двойного внедрения?