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
原文地址:https://www.jb51.cc/swift/323324.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。