当我使用iOS-Universal-Framework时,我有一个问题

时间:2013-11-25 04:49:40

标签: ios frameworks

iOS-Universal-Framework's页面:https://github.com/kstenerud/iOS-Universal-Framework 它是一个XCode项目模板,用于为iOS构建通用(arm6,arm7和模拟器)框架。

我使用此模板构建了我的框架,但是我遇到了问题,我已将所有类打包在模板中,包括.h文件#define kCOMPANYID 2中的宏定义Macro.h,但是问题是...... kCOMPANYID必须可以由使用我的框架的人修改,因此kCOMPANYID必须在框架外定义,但问题是,我的框架中的某些类必须使用{{1所以这是冲突,我不知道该怎么办,请帮助我,谢谢。

1 个答案:

答案 0 :(得分:0)

你应该尽可能避免#define

一种方法是为它设置一个setter / getter函数

e.g。

// public header file

void SetCompanyId(int value);
// int GetCompanyId();  // it can be in public header or private header

// some .m or .c or .cpp file

static int companyId;

int GetCompanyId() { return copanyId; }
void SetCompanyId(int value) { companyId = value; }

或者如果用户提供了id,只需将其设为全局变量即可。您可以向其添加const,以便价值无法更改

// header file in your framework
extern const int kCompanyId;

// some implementation file in user code
const int kCompanyId = 2;

然后用户必须提供公司ID,否则会出现链接器错误