[英]Control of header file for objective-c library
我正在为iPhone编写obj-c伪造库。 我需要将库部署到我的客户端以进行项目管理,但是我不希望对我的属性进行任何处理。 我想提供一个可以与我的客户端一起使用的库的头文件。 但是问题是这样的:我的A类扩展了B类,B类扩展了C类。我想将A类的头(文件Ah)提供给客户端,但是“ Ah”中有“ import Bh”这样的代码,所以如果我不会公开我的Bh,它不会在我客户的项目中进行编译,例如C类和更深的基础类。 而且我无法公开这些类,因为它们会公开我的所有结构并导致属性的空洞化。 请帮助,非常感谢。
正如对Caleb的回答的评论所述,一个类必须能够看到其超类的@interface
。
但是,这就是您可以做的。 除指定的初始化程序外, ClassB
的接口几乎可以为空。 然后,您可以将所有内部库属性和方法放在单独的头文件中的类别中。 例如
// ClassA.h ---------------------
#import "ClassB.h"
@interface ClassA : ClassB
// stuff
@end
// ClassB.h ---------------------
@interface ClassB : NSObject
// Properties and methods on ClassB that really are public (possibly none).
@end
// ClassB+Internal.h ---------------------
#import "ClassB.h"
@interface ClassB(Internal) // "Internal" can be anything you like
@property (copy) NSString* mySecretProperty;
// etc
@end
// ClassB.m ---------------------
@interface ClassB() // Class extension
// Really secret properties and methods not to be seen outside of this file.
@property (copy) NSString* myReallySecretProperty;
@end
@implementation ClassB
@synthesize mySecretProperty;
@end
通常,您将为Internal类别创建一个实现,但是实际上不需要,只要方法在运行时存在即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.