我的目标是构建一个框架,但隐藏公共标题中的一些方法和属性
关键是框架内置了所有内容,但不同的版本必须隐藏一些属性和方法
我正在寻找一些方法,要么从构建的标题中删除一些标记的属性,要么避免在构建阶段添加它们。
在我看来,它应该是这样的:
@interface MyClass
@property (strong, nonatomic) SomeClass1* instance1;
#AVAILABLE FROM 1.0.2
@property (strong, nonatomic) SomeClass2* instance2;
#AVAILABLE FROM 1.0.3
@property (strong, nonatomic) SomeClass3* instance3;
- (void) method1;
#AVAILABLE FROM 1.0.3
- (void) method2;
@end
因此,如果我将一些预定义的版本值或项目版本值(并不重要)设置为1.0.2 那么instance1,instance2和method1应该在框架头文件中,但是 instance3和method2仅在1.0.3或更高版本中可用
有谁知道怎么做?
答案 0 :(得分:1)
您可以使用预编译步骤执行此操作:
a)在每个buildTarget的项目中,创建一个#def值,如版本(#define VERSION 1.0
)。每个buildTarget应该有不同的版本,并代表您的FW的不同版本。为此,请转到项目选项,构建目标选项 - >构建设置 - > PRECOMPILER MACROS
b)创建一个预编译器函数,如GREATER THAN:
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) v>= VERSION
(可以在.pch中定义)
c)在标题栏
#if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(1.0.2))
property (strong, nonatomic) SomeClass2* instance2;
#endif
等
你认为这可以解决你的问题。
如果您这样做,预编译器将跳转其版本
下的代码