【问题标题】:Default initialization of an object of const type 'NSString *const __strong'?const类型'NSString *const __strong'的对象的默认初始化?
【发布时间】:2015-12-05 01:51:08
【问题描述】:

当我的 Xcode 项目使用 .mm 文件编译时出现多个错误,并且所有错误都相同 "Default initialization of an object of const type 'NSString *const __strong'",建议输入 =nil。一些 .cpp 文件也包括在内,当我将 C++ 代码放入 .mm 时,.mm 没有出现问题,出现错误。 我们都知道,如果我们输入 .mm ,它将同时编译 Objective-C 和 C++。错误主要与NSString *const object; 类型的初始化有关。我不想在此之前放置 extern 或对其进行其他修改,因为这些类是由客户在岸团队中的其他人编写的,所以我不应该碰这些。

【问题讨论】:

    标签: c++ ios objective-c nsstring


    【解决方案1】:

    声明,如

    NSString *const object;
    

    object 是一个指向NSString 对象的常量指针。注意constant pointer这两个字,即一个常量,不能修改的指针。

    这样的指针必须在定义的时候初始化,否则它将永远未初始化(或者如果在全局范围内定义则初始化为零)。您不能稍后分配给它来初始化它。

    如果您在其他翻译单元/模块中声明了此类变量,那么您必须使用extern 关键字明确告诉编译器这是一个存在的变量声明(并且是初始化)其他地方。

    【讨论】:

    • NSString *const 对象;运行良好,仅当我在 .mm @joachimileborg 中编译 c++ 代码时才会出现错误
    • @Codecracker 我认为“工作良好”是夸大其词,因为它永远不会被赋予有效值。
    • 是的,当然,我会要求陆上团队做进一步的修改,感谢@molbdnilo 的回复
    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    相关资源
    最近更新 更多