Objective c 自定义静态库

Objective c 自定义静态库,objective-c,static-libraries,xcode4.4,Objective C,Static Libraries,Xcode4.4,我创建了一个XCode projet,它包含两个目标和我在两个目标中实现的静态库。根据编译的目标,静态库的某些类需要稍微不同 我不知道如何正确地做这件事。 有什么想法吗 谢谢他们需要以什么方式与众不同? (我的答案基于这样一种猜测,即可以通过在类中设置某种状态变量或通过自定义init方法来处理) 我建议您为需要具有不同行为的类创建某种形式的自定义init方法或实例变量。然后,可以在每个目标的生成设置中使用用户定义的设置 查看此问题和答案以了解更多信息: 基本上,您可以有一个类似这样的字符串的设置

我创建了一个XCode projet,它包含两个目标和我在两个目标中实现的静态库。根据编译的目标,静态库的某些类需要稍微不同

我不知道如何正确地做这件事。 有什么想法吗


谢谢

他们需要以什么方式与众不同? (我的答案基于这样一种猜测,即可以通过在类中设置某种状态变量或通过自定义init方法来处理)

我建议您为需要具有不同行为的类创建某种形式的自定义init方法或实例变量。然后,可以在每个目标的生成设置中使用用户定义的设置

查看此问题和答案以了解更多信息:

基本上,您可以有一个类似这样的字符串的设置:“Standard”,您可以从

FooBarClass.h

typedef enum {   FooBarSettingNormal,   FooBarSettingFast } FooBarSetting;

-(id)initWithSetting:(FooBarSetting)setting;
然后从代码中获取buildsetting中的变量集并初始化FooBar对象,如下所示:

SomeViewController.m

NSNumber* fooBarSetting = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"FooBarSetting"];
FooBar * baz = [[FooBar alloc] initWithSetting:[fooBarSetting intValue]];
这使您能够在类中有不同的行为,并使静态库与您正在使用的项目分开并独立


我希望这对您有所帮助:)

您不能在编译时使用静态库执行此操作,因为它只是一个静态库。它不关心您在使用它的产品中针对哪个平台。时期如果您确切地告诉我们您需要做什么,我们可能会想出一个运行时解决方案。将静态库分离到另一个Xcode项目中,在这个新的Xcode项目中创建两个目标,并根据这两个目标更改行为。在源项目中设置不同的目标依赖项和链接。以SDWebImage()为例-有两个目标SDWebImage和SDWebImage ARC,这些目标生成两个不同的静态库(libSDWebImage.a和libSDWebImageARC.a)进行链接。我喜欢在静态库中创建多个目标的想法:-)。感谢@RobertVojtaYou可以将目标库中需要不同的部分分离到不同的库中,并构建新库的两个版本。