Object-C在Nil上调用方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Object-C在Nil上调用方法相关的知识,希望对你有一定的参考价值。

  在Object-C中,nil对象的作用等同于很多其它语言的NULL指针。不同的地方在于,在nil上调用方法不会导致程序崩溃或抛出异常。

  这种技术被用在很多地方,但是对于我们来讲,最主要的就是我们不用在调用一个对象的方法之前检查该对象是否为空。如果你调用了一个nil对象的方法并且该方法有返回值的话,你会得到一个nil返回值。

  我们也可以用它来稍微改进一下我们的dealloc方法:

  - (void)dealloc

  {

    self.caption = nil;

    self.photographer = nil;

    [super dealloc];

  }

  可以这样做是因为当我们将nil赋值给一个实例变量,设置器(setter)会释放旧对象并且保留(retain)nil对象。这种做法对于dealloc来说更好一些,因为这样做避免了让变量指向一个随机的数据,而这个数据又恰好是另外一个对象。

  注意,我们在这里使用了self.语法,这表示我们使用的是setter,它会进行内存管理。如果我们仅仅是直接设置值,像下面这样,那就回产生内存泄漏:

  caption = nil;

以上是关于Object-C在Nil上调用方法的主要内容,如果未能解决你的问题,请参考以下文章

unity Object-c交互

可选链式调用

Swift16-可选链式调用

Swift16-可选链式调用

Object-C类方法构造函数

Object-C--->Swift之属性观察者