iphone - Objective-C 中的 NS_BLOCK_ASSERTIONS

标签 iphone objective-c xcode debugging

我在 iPhone 应用程序中使用 NSAssert() 调用,我对 Apple 文档的理解是,如果定义了 NS_BLOCK_ASSERTIONS,则断言不会编译到代码中。

要关闭断言,我在头文件中声明:#define NS_BLOCK_ASSERTIONS

但是,断言代码似乎仍在运行。

这里有什么我遗漏的吗?

谢谢

约翰

最佳答案

如果您基于标准模板之一创建了 Xcode 项目,则 Cocoa header (包括 NSException.h,其中包含 NSAssert 宏)将在项目中的任何其他文件之前进行预处理。一个 #define NS_BLOCK_ASSERTIONS因此,在任何项目的头文件或实现文件中对 NSAssert 没有影响宏。

试着把 NS_BLOCK_ASSERTIONS进入目标甚至项目的预处理器宏(仅用于发布配置):

GCC_PREPROCESSOR_DEFINITIONS = 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/

相关文章:

iphone - 从少数国家下载的应用程序中没有 iAd

iphone - UIWebView 自动播放视频

ios - NSJSONSerialization JSON 解析问题

ios - 错误 - 捕获 "NSInternalconsistencyException","API violation - element is a required parameter"

iphone - 将 UIButton 粘贴到 UIImageView 的 UIImage 中

iphone - 在 xCode 中加载自定义 UIFonts

iPhone Core 数据实体查找

ios - xcode 发送 bool 值到soap webservice

ios - 如何淡入淡出图层?

objective-c - CGContextAddEllipseInRect 不绘制任何东西