我正在尝试构建一个库,该库具有处理 iOS 和 OSX 通讯簿框架(iOS 上的联系人列表和 OSX 上的联系人)的便捷方法,并包括以下方法:
(BOOL)addressBookContainsRecordWithID:(NSString *)recordID
(NSInteger
在 OSX 的情况下)(id)newOrExistingGroupWithName:(NSString *)groupName
(id)addressBookRecordWithID:(NSString *)recordID
等等
而且我希望能够在 OSX 和 iOS 上调用这些方法,但让该方法执行每个设备各自的逻辑路径。例如,在 OSX 上它会使用一个使用的方法,ABPerson
而ABGroup
在 iOS 上它会使用一个使用ABRecordRef
.
我目前的计划是使用预处理器指令 ( #if device-is-osx callOSXMethod #else callIOSMethod
) 来确定我使用的是 iOS 还是 OSX 并使用正确的方法。
有没有更好的方法可以解决这个问题?我觉得这里可以使用一些设计模式。