自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Objecitive-C中的nil

移動(dòng)開發(fā) iOS
nil是一種類型,它只有一個(gè)值nil,它的主要功能是用于區(qū)別其他任何值,就像之前所說(shuō)的,一個(gè)全局變量在第一次賦值前的默認(rèn)值就是nil,將nil賦予一個(gè)全局變量等同于刪除它,Lua將nil用于表示一種“無(wú)效值(non-value)”的情況,既沒有任何有效值的情況。

當(dāng)我學(xué)習(xí)OC的時(shí)候,我總是忍不住在對(duì)比。Actionscript是如何實(shí)現(xiàn),而oc又是如何實(shí)現(xiàn)。這不,碰到nil的時(shí)候我發(fā)現(xiàn)了很大的不同之處。做個(gè)筆記。


在as中,如果將一個(gè)對(duì)象置為null,相當(dāng)于空指針,那么后續(xù)對(duì)該對(duì)象的操作會(huì)報(bào)錯(cuò)。而在編碼中,我們常常會(huì)判斷if(obj == nul )來(lái)判斷該對(duì)象是否存在,存在的話才可以進(jìn)行后續(xù)操作。

而在oc中,nil就相當(dāng)于c、c++中的NULL指針,一般釋放對(duì)象后將對(duì)象置為nil非常重要,這樣可以防止引用非法指針導(dǎo)致程序崩潰掉。

  1. [obj release];//此時(shí)obj的引用計(jì)數(shù)為0 
  2. [obj someMethod];//程序崩潰 
  3. [obj release]; 
  4. obj = nil; 
  5. [obj someMethod];//obj此時(shí)為nil,但不會(huì)崩潰 

在objective-c中我們只用nil來(lái)檢查程序的邏輯,而不用于判斷對(duì)象是否為空來(lái)避免崩潰。這與c++是不同。objective-c在運(yùn)行時(shí)會(huì)自動(dòng)處理向nil對(duì)象發(fā)送消息(調(diào)用方法),不會(huì)報(bào)錯(cuò)崩潰掉。

責(zé)任編輯:閆佳明 來(lái)源: oschina
相關(guān)推薦

2014-08-14 10:12:45

SwiftNil Coalesc

2015-03-13 09:36:09

NULLnullptr

2009-12-16 14:51:26

Ruby nil

2024-01-15 07:08:34

IsNil方法結(jié)構(gòu)體

2022-06-13 07:03:25

Go 語(yǔ)言怎么優(yōu)化重

2020-12-17 06:25:05

Gopanic 模式

2010-01-21 14:07:14

CC++聲明

2010-01-21 09:34:57

C++語(yǔ)法

2010-01-27 16:05:06

C++堆棧

2011-07-20 10:06:54

CC++const

2011-04-11 11:09:50

this指針

2021-12-27 08:53:23

Go函數(shù) Nil

2024-01-02 07:43:47

Go語(yǔ)言靜態(tài)類型

2010-01-20 10:19:55

C++數(shù)組

2010-01-21 13:33:44

C++基類

2010-01-25 10:25:19

C++變量

2010-01-28 16:31:54

C++類型

2010-01-27 17:16:52

C++構(gòu)造函數(shù)

2020-08-21 13:20:36

C++If ElseLinux

2019-08-28 14:21:39

C++C接口代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)