我已经在一个宠物项目上工作了几个星期,并开始认为它可能会被我自己和几个朋友使用。目前,它实际上只是一个 XCode 项目中的一堆 Objective-C 类,我一直在使用 main() 来测试各种特性。如果我将它打包为 .dylib 文件,那么在项目中使用这个库似乎是最容易的。正如我在其他语言中发现的那样,事后才这样做是一件令人讨厌的事情,理想情况下会被外包到最低级别。:)
我对 Objective-C/Xcode 世界很陌生,但是根据 Apple 的“动态库编程主题”,我的印象是,这实际上只是将我的接口文件重新调整为以下格式的问题:
@protocol Person
- (void)setName:(NSString*)name;
- (NSString*)name;
@end
@interface Person : NSObject <Person> {
@private
NSString* _person_name;
}
@end
(取自引用的 Apple 文档)。
其中:我正在定义一个协议,其中包含我希望包含在 .dylib 中的类的方法,然后定义一个接口,该接口将实现上述协议的 NSObject 子类化并在此处声明 ivars。
几个问题:
我是否可以从协议中省略我不想“导出”到 dylib 的方法?
如果我在 dylib 中有一个类的子类,我是否为子类创建另一个协议,并使新创建的类的超类实现该协议?例如,如果我是 person 的子类:
@protocol CatPerson
/* any additional methods for CatPerson not in Person */
- (void) protractClaws;
- (void) retractClaws;
@end
@interface CatPerson : Person <CatPerson> {
@private
/* any additional ivars for CatPerson not in Person */
NSNumber *clawCount;
}
这可能是一个非常微不足道的问题,但我试图弄清楚我需要做的所有事情,然后再将所有课程移至 .dylib。