2012-09-12 2 views
4

2 개의 대상과 두 대상 모두에 구현하는 정적 라이브러리가 포함 된 XCode Projet을 만들었습니다. 내 정적 라이브러리의 일부 클래스는 내가 컴파일하는 대상에 따라 약간 달라야합니다.정적 라이브러리 사용자 정의

어떻게 제대로 할 생각이 없습니다. 아이디어가 있으십니까?

감사합니다.

+0

정적 라이브러리로 컴파일 할 때이 작업을 수행 할 수 없다. 사용중인 제품에서 어떤 플랫폼을 타겟팅하고 있는지 상관하지 않습니다. 기간. 당신이해야 할 일을 정확히 말해 준다면 아마 우리는 런타임 솔루션을 찾을 수있을 것입니다. –

+1

정적 lib를 다른 Xcode 프로젝트로 분리하고이 새로운 Xcode 프로젝트 내에 두 개의 대상을 작성한 다음이 두 대상을 기반으로 동작을 변경하십시오. 그리고 당신의 원 프로젝트에서 다른 타겟 의존성과 연결을 설정하십시오. 예를 들어 SDWebImage (https://github.com/rs/SDWebImage)를 살펴보면 SDWebImage 및 SDWebImage ARC의 두 대상이 있고이 대상은 연결할 두 개의 정적 라이브러리 (libSDWebImage.a 및 libSDWebImageARC.a)를 생성합니다. – robertvojta

+0

저는 정적 라이브러리에서 여러 대상을 만드는 아이디어를 좋아합니다 :-). Thanks @ RobertVojta – Niko

답변

0

어떻게 달라야할까요? (내 대답은 클래스 또는 사용자 지정 init 메서드에 의해 일종의 상태 변수를 설정하여 처리 할 수있는 추측에 기초하고있다)

사용자 지정 초기화 메서드 또는 인스턴스의 일부 양식을 만드는 것이 좋습니다 다른 동작이 필요한 클래스에 대해 설정 한 변수입니다. 그런 다음 각 대상에 대한 빌드 설정에서 사용자 정의 설정을 사용할 수 있습니다.

확인이 질문에 대한 자세한 내용은 & 답 : iphone: get User Defined variable in Target's setting by code?

Basicly이 같은 문자열이 될 것입니다 설정을 가질 수 그래서 "표준", 당신은 다음

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]]; 

이렇게하면 당신은 당신의 수업에서 다른 행동을하고 정적 라이브러리를 별도로 유지하고 당신이 사용하고있는 프로젝트로부터 독립 할 수 있습니다.

나는 이것이 다소 도움이 되었기를 바란다.

관련 문제