我的目标是构建一个框架,但隐藏公共(public) header 中的一些方法和属性
重点是框架已经内置了所有内容,但不同版本必须隐藏一些属性和方法
我正在寻找某种方法来从构建 header 中删除一些标记的属性或避免在构建阶段添加它们。
在我看来应该是这样的:
@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 应该位于框架 header 中,但是
instance3 和 method2 仅在 1.0.3 或更高版本中可用
有人知道怎么做吗?
最佳答案
您可以通过预编译步骤来完成:
a) 在项目中为每个 buildTarget 创建一个 #def 值,例如 version(#define VERSION 1.0
)。每个 buildTarget 应该有不同的版本,并且代表您的固件的不同版本。为此,请转到项目选项、构建目标选项->build设置->预编译器宏
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
等等
您认为这解决了您的问题吗?
如果你这样做,预编译器将跳转其版本下的代码
关于objective-c - 将属性和方法封装在框架头文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13956243/