链接UIKit和AppKit

hug*_*ugo 2 cocoa objective-c

我正在尝试创建一个可以在iPhone和OS X上用作数据源的基础对象.因此我会有一个带有语句的头文件,例如:

#ifdef TARGET_OS_IPHONE
#import <UIKit/UITableView.h>

@interface DataObject : NSObject<UITableViewDataSource>
#endif

#ifdef TARGET_OS_MAC
#import <AppKit/NSTableView.h>

@interface DataObject : NSObject<NSTableViewDataSource>

#endif
Run Code Online (Sandbox Code Playgroud)

我目前的Xcode项目使用的是标准的Apple iPhone模板.我的问题是,当我在"Build Phases"选项卡下选择"Link Binary With Libraries"时,我只看到了与iPhone相关的框架.

当然我可以选择其他然后浏览,但我不知道AppKit.Framework在哪里生活.任何人都可以指出我可以在哪里找到这个框架或者如何将项目链接到UIKit和AppKit

Jer*_*myP 5

我可以建议略有不同的设计吗?

DataObject应该只链接在iOS和Mac OS X上都存在的Foundation.它不包含任何数据源的方法.

然后在您的iOS应用程序目标中,您有一个实现UITableViewDataSource方法的DataObject类别,并且在您的OS X应用程序目标中,您在DataObject上有一个实现NSTableViewDataSource方法的类别.

@interface DataObject(NSTableViewDataSource) <NSTableViewDataSource>
Run Code Online (Sandbox Code Playgroud)

iOS和OS X应用程序中的用户界面代码将完全不同,无论如何您都需要不同的目标,并且每个目标都链接到相关的SDK.