ios - 目标 Interface Builder 的预处理器宏不适用于 OS X?

标签 ios objective-c macos macros interface-builder

我有一个 IB_DESIGNABLE 自定义 NSView 子类。绘图时,我希望我的 View 仅在 Interface Builder 中运行时才执行方法。我查了一下,Apple 的文档指出:

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

- (void)connectToMyServer {
#if !TARGET_INTERFACE_BUILDER
    // connect to the server
#else
    // don't connect; instead, draw my custom view
#endif 
}

我跳转到我的代码,并将以下内容添加到我的方法之一:

#if TARGET_INTERFACE_BUILDER
[self myMethodForInterfaceBuilder];
#endif

我立即收到以下错误:

... /MyCustomView.m:134:8: Use of undeclared identifier 'TARGET_INTERFACE_BUILDER'

这让我相信 TARGET_INTERFACE_BUILDER 预处理器宏仅适用于使用 iOS SDK 的 Xcode 目标。我的这个假设是正确的,还是我忽略了什么?任何建议都会很棒!谢谢。

最佳答案

该宏仅在 Interface Builder 构建您的代码时定义。因此正确的用法是这样的:

#ifdef TARGET_INTERFACE_BUILDER
... // for Interface Builder 
#else
... // regular behavior
#endif

关于ios - 目标 Interface Builder 的预处理器宏不适用于 OS X?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26946815/

相关文章:

c++ - 如何获取 oc 类中私有(private) c++ 类型字段的值?

cocoa - 如何在 Cocoa 中打印控件层次结构?

android - 在 Mac 上安装 Android SDK

css - iOS 中的复选框外观

ios - 更改 AVAudioSession 后 AVCaptureSession 没有音频

ios - 将值从统一 3D 传递到 objective-c 文件

macos - 使用 AppleScript 从文本文档中提取两个字符串之间的字符串

ios - 回调方法 ios 的单元测试用例

ios - 当 UIScrollView 滚动时使静态 UIView 变粘

ios - 在 iOS 应用程序中检测 AirPlay 镜像