1

在 objC 中,

NSString *stringValue = @"123s";
NSInteger *intValue = [stringValue integerValue];   
NSLog(@"intergerValue %@",intValue);

if(!intValue)
{
   NSLog(@"caught null object");

}
else
{
    // Do appropriate operation with the not null object
}

打印“ interValue (null)” “捕获的空对象”

并且通过在 if 条件中使用 !(not) 运算符安全地完成绑定......

但是,在 swift 中,使用可选变量的等效代码段是

 var normalValue : String = "123s"
 var optionalValue = normalValue.toInt()
 println("optionvalue \(optionalValue)")

  if optionalValue {
     // Do appropriate operation with the not nil value
  }
  else{

      println("caught null object")
  }

这个“可选绑定”也在objectiveC中完成,那么具有可选变量/常量的确切用途是什么。也有人说我们可以避免返回 null 对象,而是可以返回 nil 值。当我们返回一个空对象时有什么问题,它会导致性能问题吗?你的正确想法....

4

1 回答 1

0

可选类型背后的意图是让程序员创建可能没有值的变量。它是 Objective-C 中的默认模型,它在 Swift 中被颠倒了,因为该语言要求变量在默认情况下具有值。

Objective-C 通过指针引用所有对象(因此*类型名称后面有星号)。由于允许所有指针没有值(即nil),因此可以将所有 Objective-C 对象视为可选的,即相应的变量可能根本没有值。

由于 Swift 在源代码层面没有 C 兼容性的要求,语言设计者选择要求对象具有指定类型的值,并通过可选类型提供了对可能没有值的变量的支持。

于 2014-06-11T13:59:27.160 回答