1. OC 和 Swift 中的區(qū)別
OC中定義Options
typedef NS_OPTIONS(NSUInteger, OCOptions) {
OC_Sound = 1 << 0,
OC_Title = 1 << 1,
OC_Vibrate = 1 << 2,
};
Swift 中定義Options
// 需要實現(xiàn)OptionSetType協(xié)議
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