【问题标题】:ARC, bridged cast and GHUnitARC、桥接演员表和 GHUnit
【发布时间】:2012-04-16 23:27:04
【问题描述】:

我正在关注http://gabriel.github.com/gh-unit/docs/appledoc_include/guide_testing.html 的教程。问题是我的项目使用 ARC 而 GHUnit 没有。我处理了以前的错误,但现在我应该做桥接演员,我从未使用过,我迷路了。

NSString *string1 = @"a string";
GHAssertNotNULL(string1, nil); //error here

错误描述:Objective-C 指针类型“NSString *”到 C 指针类型“const void *”的隐式转换需要桥接强制转换。

欢迎任何帮助:)

【问题讨论】:

    标签: objective-c automatic-ref-counting gh-unit


    【解决方案1】:

    由于您正在比较一个 NSString,您应该使用 GHAssertNotNil 检查。请参阅NULL vs nil in Objective-C 了解更多信息。

    所以你的例子应该是:

    NSString *string1 = @"a string";
    GHAssertNotNil(string1, nil);
    

    我还在使用 GHUnit 的 ARC 项目中注意到 GHUnit main.m 文件需要

    -fno-objc-arc
    

    之前建议的链接器标志。

    【讨论】:

    • 好收获。当前文档仅使用 GHAssertNotNull 而不是 GHAssertNotNil,这会导致 ARC 代码出现问题。
    【解决方案2】:

    您可以只从项目中的自动引用 (ARC) 中排除 GHUnit 文件,方法是进入 构建阶段 -> 编译源代码

    然后双击GHUnit中的文件,会出现一个框,将以下内容粘贴到其中

    -fno-objc-arc
    

    这将从自动引用 (ARC) 中排除来自 GHUnit 的文件。

    【讨论】:

    • 在 GHUnit 不实现 ARC 之前,这是个好主意。但是我仍然想知道如何做这些桥梁,尽量从一些 ARC 参考中获取这些信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2023-03-17
    • 2012-11-17
    • 2011-10-12
    相关资源
    最近更新 更多