Swift基础(九)id兼容性与nil对象

// id兼容性

   // Swift语言将Objective-C中的id对象导入为AnyObject类型,表示任意类型的对象。AnyObject协议允许编写安全类型的代码,同事位置无类型对象的灵活性。因为AnyObject协议保证了这种安全。

   // 跟id一样,你可以为AnyObject类型的对象分配任何其他类型的对象,你也同样可以为它重新分配其他类型的对象。

   var myObject: AnyObject = UITableViewCell() // 赋值UITableViewCell类型

  myObject = NSDate() // 重新赋值NSDate类型

  // 在调用Objective-C方法或者访问属性时不将它转换为具体类的类型,包括Objective-C中标记为@objc的方法

  let futureDate = myObject.dateByAddingTimeInterval(10)

  let timeSinceNow = myObject.timeIntervalSinceNow;

// 因为直到运行时才知道AnyObject的对象类型,所以有可能在不经意间写出不安全代码。另外,与Objective-C不同的是,如果调用方法或者访问的属性AnyObject对象没有声明,将会报运行时错误。比如下面的代码在运行时将会报出一个unresolved identigier错误

myObject.characterAtIndex(5);


// nil对象

// Objective-C中使用nil来表示引用一个空对象(null),指向不存在对象的指针。Swift中所有的值都不会为nil。,Swift里nil不是指针,它表示特定类型的值不存在。如果需要表示一个缺失的值,可以使用Optional。

你可能感兴趣的:(iOS)