Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 适用于Mac OS和iOS的通用类_Swift - Fatal编程技术网

Swift 适用于Mac OS和iOS的通用类

Swift 适用于Mac OS和iOS的通用类,swift,Swift,我想为Mac OS和iOS应用程序创建一个类。不幸的是,我不能在iOS上使用NSColor,在Mac OS上也不能使用UIColor 实际上,我有以下代码: #if os(iOS) func myFunc(color: UIColor?) { self.myFuncX(color) } #elseif os(OSX) func myFunc(color: NSColor?) { self.myFuncX(color) } #endi

我想为Mac OS和iOS应用程序创建一个类。不幸的是,我不能在iOS上使用NSColor,在Mac OS上也不能使用UIColor

实际上,我有以下代码:

#if os(iOS)
    func myFunc(color: UIColor?) {
        self.myFuncX(color)
    }
#elseif os(OSX)
    func myFunc(color: NSColor?) {
        self.myFuncX(color)
    }
#endif

private func myFuncX(color: AnyObject?) {
    #if os(iOS)
        myColor = color as! UIColor
    #elseif os(OSX)
        myColor = color as! NSColor
    #endif
}

有更好的方法吗?

您应该能够对color类使用
typealias
,如下所示:

#if os(iOS)
    typealias XColor = UIColor
#elseif os(OSX)
    typealias XColor = NSColor
#endif

func myFunc(color: XColor?) {
    self.myFuncX(color)
}

其思想是将条件编译限制为
XColor
的类型定义,然后根据特定系统的需要,使用该类型别名代替
UIColor
NSColor

是的,抱歉。。。我只是没有在iOS上测试代码;)我编辑了我的帖子。