0

我已经在一个宠物项目上工作了几个星期,并开始认为它可能会被我自己和几个朋友使用。目前,它实际上只是一个 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。

4

1 回答 1

0

Project->New Target…在你得到的面板中选择“dylib”。使其成为当前目标。控制并单击组和文件 tableview 标题,检查“目标成员资格”。选中要包含在 dylib 中的文件旁边的框。

于 2010-11-03T04:22:42.113 回答