2012-12-16 43 views
0

我試過了,我已經成功地將一個塊分配給了一個變量和id變量。塊是一個obj-c對象嗎?爲什麼我們使用NULL而不是零? (如果它是一個對象)Objective-C對象和塊

回答

2

塊可以用作Objective-C上下文中的對象(也就是說,用GCC或LLVM編譯的純C或C++程序也可以使用塊,但它們不能作爲對象,因爲這兩種語言都不理解以有意義的方式的Objective-C)。

一般來說,你應該使用nil的對象,NilClass ES和NULL其他指針。我不知道你在用NULL而不是nil來代替nil,但是這不是我在Objective-C上下文中所做的事情(和以前一樣,在C或C++環境下,nil和不可用沒有引入了Objective-C運行時頭文件,所以我會使用NULL。)

+0

我在每個示例或示例代碼中都看到NULL。 –

+0

如?我自己總是使用'nil'。 – jrtc27

+0

NULL,零,0 - 在Objective-C中所有相同的東西。 – rmaddy

2

C塊的一個很好的特性是它們可以表現得像基本的Obj-C對象一樣。你可以投一個塊到id;你可以發送一個Block'Obj-C消息,比如'copy','retain','release','autorelease';你可以將一個塊填充到NSArray或NSDictionary中。但是,如果要執行該塊,則必須將其恢復爲原始類型。

NULL,nil,Nil和0只是零的不同單詞。選擇其中之一僅僅是您的程序員的文檔;它對編譯器有所不同。

按照慣例,NULL代表空C指針,而nil代表空Obj-C對象。由於塊是這兩種情況,你的同行程序員不會因爲選擇NULL或零來表示空塊而嘲笑你。你的編譯器肯定不會在意。