Предположим, следующий код в target- c
@interface TestClass : NSObject
@end
@implementation TestClass
- (void)doSomething {}
- (void)iWillCrash
{
[self.class doSomething];
}
+ (void)iWillNotCompile
{
[self doSomething];
}
@end
Моя проблема заключается в том, что до сих пор я часто использую self.class
для вызова метода класса из не классового метода в том же классе. Сегодня я обнаружил, что не получаю никакой ошибки времени компиляции, если метод (в примере doSomething
) на самом деле не является методом класса, как в примере выше. Но это, очевидно, будет sh во время выполнения. Что еще хуже, я даже не получу сообщение об ошибке, если doSomething
даже не является допустимым методом в моем собственном классе, но в любом другом классе, который включен в мой файл класса.
Конечно, я могу решить эту проблему с помощью [TestClass doSomething]
Но я нахожу это излишним и не интуитивно понятным.
Я пробовал что-то вроде [__typeof(self) doSomething]
Но это не работает.
Есть ли лучший способ получить ошибки времени компиляции без дублирования имени моего класса в моем исходном файле каждый раз, когда я вызываю метод класса из метода того же класса?
Кстати, iWillNotCompile
не удастся как и ожидалось.
Я использую XCode 11.3
TL-DR: я не хочу знать hot, чтобы получить iWillNotCompile
для компиляции, но как получить iWillCrash
, чтобы не компилировать без явного использования имени класса в вызове.