Ошибка связывания констант с 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 для объявления констант