我在 iPhone 应用程序中使用 NSAssert() 调用,我对 Apple 文档的理解是,如果定义了 NS_BLOCK_ASSERTIONS,则断言不会编译到代码中。
要关闭断言,我在头文件中声明:#define NS_BLOCK_ASSERTIONS
但是,断言代码似乎仍在运行。
这里有什么我遗漏的吗?
谢谢
约翰
最佳答案
如果您基于标准模板之一创建了 Xcode 项目,则 Cocoa header (包括 NSException.h
,其中包含 NSAssert
宏)将在项目中的任何其他文件之前进行预处理。一个 #define NS_BLOCK_ASSERTIONS
因此,在任何项目的头文件或实现文件中对 NSAssert
没有影响宏。
试着把 NS_BLOCK_ASSERTIONS
进入目标甚至项目的预处理器宏(仅用于发布配置):
或者把 #define NS_BLOCK_ASSERTIONS
到 #import <Cocoa/Cocoa.h>
之前的前缀 (.pch) header 中或 #import <Foundation/Foundation.h>
行。
关于iphone - Objective-C 中的 NS_BLOCK_ASSERTIONS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6445222/