Когда мой проект 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;
вид инициализации. Я не хочу ставить extern до этого или делать какие-либо другие модификации, потому что эти классы написаны кем-то еще в клиентской береговой команде, поэтому я не должен их трогать.
Декларация, такая как
NSString *const object;
Говорит, что object
постоянный указатель на NSString
объект. Обратите внимание на слова постоянный указатель, то есть указатель, который является постоянным и не может быть изменен.
Такой указатель должен быть инициализированным во время определения, в противном случае он будет навсегда неинициализирован (или инициализирован нулем, если определен в глобальной области видимости). Вы не можете назначить это позже, чтобы инициализировать это.
Если у вас есть такие переменные, объявленные в других единицах / модулях перевода, то вы должен использовать extern
ключевое слово для явного указания компилятору, что это объявление переменной, которая существует (и инициализируется) где-то еще.