В Objective-C, у меня есть что-то вроде:__has_include проверить, существует ли класс против swift?
#if __has_include(<MyFramework/SomeFeature.h>)
SomeFeature *h = [SomeFeature new]
#else
OtherFeature *h = [OtherFeature new]
#endif
Как мы можем проверить, если в стрижа класс существует? У этой ссылки есть какой-то ответ Weak Linking - check if a class exists and use that class
Хорошая вещь о __has_include
заключается в том, что это проверка времени компиляции, но она работает только для заголовка цели-c. У нас есть что-то для быстрого? Или, может быть, то, что я делаю, не очень хороший подход?
К примеру, у меня есть класс Machine
и имеет метод Gun
, если я включил Pistol
рамки, он будет возвращать Pistol
. Если бы я включил оба Pistol
и AK47
, он вернет AK47
, потому что у него больше пуль.
Swift 4.1 поставляется с новой проверкой 'canImport'. [Предложение] (https://github.com/apple/swift-evolution/blob/master/proposals/0075-import-test.md) – execv