OC和Swift中的Options

1. OC 和 Swift 中的区别

OC中定义Options

typedef NS_OPTIONS(NSUInteger,Ocoptions) { OC_Sound = 1 << 0,OC_Title = 1 << 1,OC_Vibrate = 1 << 2,};

Swift 中定义Options

// 需要实现OptionSetType协议
struct SwiftOptions: OptionSetType {
    let rawValue: UInt
    init(rawValue: UInt) { self.rawValue = rawValue }

    static let Swift_Sound = SwiftOptions(rawValue: 1 << 0)
    static let Swfit_Title = SwiftOptions(rawValue: 1 << 1)
    static let Swift_Vibrate = SwiftOptions(rawValue: 1 << 2 )
}

* 在Swift中,可以调用OC的Options,但是,在OC中,不能调用Swift中的Options。 *

在OC中,不能调用Swift中定义的:

  • Generics
  • Tuples
  • Enumerations defined in Swift without Int raw value type
  • Structures defined in Swift
  • Top-level functions defined in Swift
  • Global variables defined in Swift
  • Typealiases defined in Swift
  • Swift-style variadics
  • nested types
  • Curried functions

2.操作

并操作(Union)

* ObjectiveC *

Ocoptions options = OC_Sound | OC_Title;

* swift *

let options = Swift_Sound.union(Swift_Vibrate)
print(options)

删除选项组合的一部分

* ObjectiveC *

Ocoptions options = OC_Sound | OC_Title; // 3
// 删除OC_Sound选项
Ocoptions modifiedOptions = options & (~OC_Sound); // 2

* swift *

let options = Swift_Sound.union(Swfit_Title) // 3
let modifiedOptions = SwiftOptions(rawValue: options.rawValue - Swfit_Title.rawValue) // 1

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...