2015-09-09 47 views
1

当我的Xcode项目与.mm文件编译得到多个错误,并且所有的错误是相同的"Default initialization of an object of const type 'NSString *const __strong'",它建议把=nil。一些.cpp文件也包含在内,而.mm当我把C++代码放在.mm中时,这些错误并没有出现。 我们都知道,如果我们把.mm它编译Objective-C和C++。这些错误大多与NSString *const object;种初始化有关。我不想在此之前放置外部或者对其进行一些其他修改,因为这些类别由客户端在岸团队编写,所以我不应该触及这些类别。const类型'NSString * const __strong'的对象的默认初始化?

回答

3

的声明如

NSString *const object; 

object是常数指针NSString对象。注意词常数指针,即一个恒定的指针,并且不能被修改。

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

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

+0

NSString * const object;工作良好只出现在我编译C++代码时.mm @joachim pileborg –

+0

@Codecracker我认为“工作好”是一种夸张,因为它永远不会被赋予一个有效的值。 – molbdnilo

+0

是的,当然,我会要求陆上团队做进一步的修改,谢谢你的回复@molbdnilo –

相关问题