首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >定义包括行、类和常规格式的自定义NSAssert

定义包括行、类和常规格式的自定义NSAssert
EN

Stack Overflow用户
提问于 2018-05-31 03:57:32
回答 1查看 55关注 0票数 0

正如标题所示,如何根据下面的NSLog定义包含行、类和格式的自定义NSAssert

#define NSLog(__FORMAT__, ...) NSLog((@"%@: " __FORMAT__), NSStringFromClass([self class]), ##__VA_ARGS__)

问题是,在考虑其他参数之前,NSAssert首先有一个BOOL值。我似乎找不到一个解决方案,除非去掉这些参数并将它们分开。

有没有更好的方法来解决这个问题?

长话短说,我正在寻找这样的东西:

#define DebugAssert(__VA_ARGS__[0], @"%@: %@", NSStringFromClass([self class]), __VA_ARGS__[1])

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-31 05:01:08

NSAssert宏的定义如下:

代码语言:javascript
复制
#define NSAssert(condition, desc, ...)  /* the implementation */

因此,该条件已经是一个独立于格式字符串和变量参数列表的参数。执行与NSLog类似的操作应该不会有任何问题

代码语言:javascript
复制
#define MyAssert(condition, desc, ...) \
    NSAssert(condition, (@"%@: " desc), NSStringFromClass([self class]), ##__VA_ARGS__)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50612535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档