在 Interface Builder 中检查代码是否为 运行

Checking if code is running in Interface Builder

我在 swift 中有自定义 IBDesignable classes,它们会执行一些导致 Interface Builder 崩溃的操作。是否有一个标志我可以检查我是否在界面生成器中 运行 ?理想情况下,它将是预编译器指令(#ifdef COMPILED_FOR_INTERFACE_BUILDER 或类似的指令)。我想也许我可以在 prepareForInterfaceBuilder() 中自己设置一个标志,但这看起来很乱,而且似乎不能可靠地工作,因为它看起来 class 属性是在调用该函数之前设置的,这可能会触发导致的代码问题。似乎必须有更好的方法。 谢谢!

来自https://developer.apple.com/library/ios/recipes/xcode_help-IB_objects_media/Chapters/CreatingaLiveViewofaCustomObject.html

You can use the preprocessor macro TARGET_INTERFACE_BUILDER to specify code for inclusion with or exclusion from your custom view class."