Ошибка связывания констант с pch в Objective-C XCode
Я пытаюсь связывать некоторые константы с моим приложением iOS в XCode в соответствии с ответом здесь. Я создал заголовочный файл Constants.h следующим образом:
// Constants.h
// myApp
extern NSString * const tumblrConsumerKey;
extern NSString * const tumblrConsumerSecret;
и файл реализации Constants.m, например:
// Constants.m
// myApp
#import "Constants.h"
NSString * const tumblrConsumerKey = @"keyiskey";
NSString * const tumblrConsumerSecret = @"secret";
Затем я добавил это в начало моего прекомпилированного заголовка myApp-Prefix.pch:
// Prefix header for all source files of the
// 'myApp' target in the 'myApp' project
//
#import <Availability.h>
#import "Constants.h"
Теперь я получаю сообщение об ошибке в файле Constants.h в строках, объявляющих extern NSString * const
и т.д.:
Expected '=', ',', ';', 'asm' or '__attribute__' before
'*' token in /Users/me/Documents/iPhone Programs/myApp/myApp/Constants.h
Похоже, мой файл Constants.m был добавлен в цель myApp. Что я делаю неправильно?
Ответы
Ответ 1
Похоже, вы немного нетерпеливы с размещением своего контента. Это должно быть после других фреймворков
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "Constants.h"
#endif
Также хорошая практика - начинать константы с заглавными буквами, обычно 2-3 буквы аббревиатуры от вашего имени/компании. Это облегчает вам видеть, что вы имеете дело с константой, а не только с нормальной переменной.
Литература:
Рекомендации Apple по префиксам имен
Рекомендации Apple для объявления констант