问题标签 [nsassert]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 如何确认我们的代码没有在 iOS 发布二进制文件中调用 NSAssert
我想禁用在构建我们的发布 iOS 二进制文件时发生在我们的代码行中的 NSAssert 调用,然后我想确认它们已被禁用,因为我是超级偏执狂。我如何确认他们被禁用?
为了在我们的发布版本中禁用 NSAssert 调用,我已将 NS_BLOCK_ASSERTIONS=1(从这里)常量添加到我正在使用 xcodebuild 执行的命令行发布版本中,以便在整个应用程序的构建中阻止 NSAssert,包括所有的构建它使用的我们的静态库。对于数十个静态库,尝试验证在每个库的项目文件中设置此标志的维护量太大,因此首选这种全局方法。它看起来像这样:
然后确认我们对 NSAssert 的调用确实被阻止了,这就是我正在尝试的方法,也是我寻求建议的地方:我将符号表从生成的二进制文件中转储出来,并寻找 NSAssert 宏调用的实际方法,像这样:
问题是我仍然看到 NSAssertionHandler 出现在符号中:
我怀疑我使用nm
不正确;或者,这个符号出现可能是因为我们正在链接使用 NSAsserts 的第三方库,或者 iOS API 本身使用 NSAsserts,从而混淆了我的验证步骤。我希望在我们的发布版本中阻止我们对 NSAssert 的所有代码调用——我如何验证是否是这种情况?任何建议,将不胜感激!
cocos2d-iphone - NSInternalInconsistencyException' 'GL_CLAMP_TO_EDGE 应该在 NPOT 维度中使用'
我刚刚将我的项目从 Kobold2d 1.1.2 升级到 2.0.4,现在每次我尝试构建时都会收到此消息。
我知道它基本上告诉我我的图像不是 2 的幂,但是在旧版本的 kobold2d 中存在相同的 NSASERT,并且一切正常。
objective-c - Xcode 断言失败消息未显示在控制台日志中
我正在使用最新的 Xcode,并NSAssert()
在我的代码中进行了调用。当其中一个断言失败时,执行停止,并且控制台日志指出发生了断言错误,但NSAssert()
调用中的消息不会显示在控制台日志中。例如:
不会导致消息“Foo bar”。显示在控制台日志中。我的理解是应该的。任何想法可能会发生什么?
objective-c - NS_BLOCK_ASSERTIONS 不会阻止静态库中的断言
NS_BLOCK_ASSERTIONS 不会阻止来自静态库的断言失败。我们如何抑制来自静态库的断言失败?
instance - fetcherWithRequest:fetcherClass 未找到
我在 GTMHTTPUploadFetcher.m 文件中收到一条警告,提示找不到“-fetcherWithRequest:fetcherClass”(返回类型默认为“id”)
对于此代码
然后我收到一个涉及基础框架的错误
解析问题预期表达式
//这是预期表达式所在的位置
更新 Xcode 后才开始出现错误(不是更新到新版本)
任何人有任何建议不确定这两者是否相关,因此将单独发布第二部分。
通过进入时间机器并恢复旧的 .m 文件并替换它来解决这个问题。它不会给我一个错误,但是由于 MIME 类型问题我无法上传视频,但那是另一篇文章。
ios - NSAssert 未在调试模式下调用
我收到了一个大的 iOS 项目,在这个项目中,每个项目都NSAssert()
被跳过,即使在调试中!
我添加了一个测试来检查NS_BLOCK_ASSERTIONS
即使在调试模式下也定义了,不,它没有定义。
assert()
像往常一样调用旧的 C 样式。
这段代码:
生成此预处理代码
我更正了我的帖子,NSAssert 没有被跳过,但应用程序只是挂起,即使 NSAssert 是 TRUE :(
ios - 我可以将静态库的发布和调试版本合并到一个二进制文件中吗?
我想允许第三方在开发他们的应用程序时在调试模式下使用我们的静态库和断言,但我也希望允许他们在发布模式下使用我们的静态库,这样他们就不必将他们的应用程序提交给带有断言的 App Store。有没有办法在没有两个单独的二进制文件的情况下做到这一点,或者这种情况有最佳实践吗?
ios - 用于正常构建的 ios NSAssert 模拟?
最近我注意到 NSAssert 只能在调试模式下工作。是否有可以在正常构建中使用的模拟?
ios - 为什么这个带有 stringWithFormat 的 NSAssert 不能编译?
stringWithFormat 应该返回一个字符串,为什么这个语句不编译
什么时候
编译?
ios - IOS 相当于 abort() 用于断言失败
是否有一种简单的方法可以NSAssert
在条件为假时抛出由 an 生成的异常?画出我所要求的平行线:在 C 标准库中,一个失败的断言导致 a printf()
and abort()
。在 Java 中,失败的断言会导致java.lang.AssertionError
. 在 ObjectiveC 中,一个失败的断言似乎会导致(从 NSException.h 复制):
我能想到的最好的等价物是将上面的块放在我定义的宏中(我们称之为NSFail()
),或者使用NSAssert(NO, ...)
. 这个NSFail
宏有点不受欢迎,因为我似乎在定义一些本质上已经存在的东西。该NSAssert(NO,...)
选项是不可取的,因为我不希望在NS_BLOCK_ASSERTIONS
定义时禁用代码。