Как получить ошибку времени компиляции при вызове метода для self.class в target- c, который на самом деле не является методом класса? - PullRequest
0 голосов
/ 09 января 2020

Предположим, следующий код в 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, чтобы не компилировать без явного использования имени класса в вызове.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...