我目前正在开发一款包含watchOS
应用扩展程序的iOS应用。在我的iOS应用程序中,我创建了一个NSObject
子类,它在一些方法中使用了AVFoundation
框架中的一些对象。
在Watch Extension方面,我正在创建一个NSDictionary
对象,然后使用WatchConnectivity
框架将其发送给我的iOS对象。然后我使用dictionary
初始化我的自定义类。
我希望能够将我的Watch Extension添加为我的自定义类.m
文件的目标之一,以便我可以继续在手表上创建自定义类的对象,然后将其发送出去。 (我的类符合NSCoding
协议,因此我可以使用NSKeyArchiver
使用NSData
表示我的对象,将其添加到字典中,然后将该字典传输到iOS设备)。
问题:AVFoundation
在我的班级使用的watchOS
中不可用。那么是否有一种方法可以“省略”某个类的某些方法,具体取决于它所在的OS。
例如:在iOS中,UIImage
使用initWithCIImage:
方法,但由于watchOS
框架不可用,因此CoreImage
无法使用该方法。
(也许我应该专门为watchOS
重新创建具有所有相同实例变量的类,并对NSCoding
方法中的类使用相同的键,省略AVFoundation
来自watchOS
1}}版本?)
非常感谢任何帮助!
答案 0 :(得分:3)
您可以使用TargetConditionals.h
中提供的宏来构建课程,例如TARGET_OS_IOS
或TARGET_OS_WATCH
,例如:
@implementation Foo
#ifdef TARGET_OS_IOS
- (void) someMethodThatUsesAVFoundation {
// ...
}
#endif
@end
您还需要包装#include
指令,以确保您只在操作系统上包含实际提供它们的框架标头。