2009-02-27 47 views
14

有人可以用人性化的理解方式解釋什麼是「Outlet」嗎?什麼描述了Objective-C/Cocoa中最好的「Outlet」?

+0

你的意思是「以一種(原文如此)人性化的理解方式?」你難以理解哪部分?你的背景是什麼?提出問題時,這些對預先陳述很重要。 – 2009-02-28 03:06:46

+0

所有可以從界面構建器(IBOutlet的)拖動的東西。 – 2012-10-14 21:57:35

回答

10

我只是把它當作一個指向UI控件。一旦我在腦海中形成了這種精神聯繫,它就有意義了。

5

我會說他們是將用戶界面對象連接到使用它們的代碼的橋樑。就像名稱所暗示的那樣,它們提供了一個將您的UI「插入」到代碼中的位置。

26

這是一個實例變量,顯示在Interface Builder中,以便您可以使用IB將另一個對象插入插座。

當您加載筆尖時,筆尖加載系統將執行必要的魔術以確保正確的對象出現在每個插座中。

編輯:我打算圍繞這張圖片寫一篇完整的博客文章(我在完成圖片後改變了主意),但即使是孤身一人,它也應該有助於爲人們澄清網點。在這裏你去:

The outlet relationship. http://boredzo.org/images/The-outlet-relationship-small.png

+0

+1你使用了什麼繪圖工具? – 2010-09-26 01:55:37

+0

Yar:Lineform。 http://freeverse.com/lineform/ – 2010-09-26 04:41:28

+0

如果A需要了解B,那麼A是一個動態創建的對象(例如NSOperation),B是applicationController? – Vassilis 2011-03-26 12:22:58

3

IBOutlet是一個符號,用於指示界面生成器,一個對象實例變量delcared作爲

IBOutlet id ivar_name; 

應作爲相關聯的類的一個實例的出口。這使您可以在Interface Builder中以圖形方式連接對象,以便在加載NIB之後(即,當對象發送-awakeFromNib消息時),ivar_name的值將成爲指向您在Interface Builder中選擇爲插座值的對象的指針。

從Objective-C語言的角度來看,IBOutlet毫無意義。

11

從代碼的角度來看,IBOutlet僅爲Interface Builder的提示。它實際上是一個編譯成的宏,什麼也沒有。也就是說,編譯時編譯器完全刪除。

但Interface Builder可以掃描IBOutlet的代碼,因此當您在IB中右鍵單擊某個對象時,您可以看到可以連接到其他對象的所有插座。

alt text http://img27.imageshack.us/img27/5512/picture820090228.png

在這個例子中,委託是UIApplication的的成員變量,它是一個IBOutlet太。

5

的IBOutlet中關鍵字的定義是這樣的:只要編譯器而言

#ifndef IBOutlet 
#define IBOutlet 
#endif 

IBOutlet中絕對什麼都不做。其唯一 的目的是作爲一個提示告訴Interface Builder,這是一個實例變量,我們將 連接到筆尖中的對象。您創建的任何實例變量,並且想要連接到nib文件中的對象的所有實例變量都必須以IBOutlet關鍵字開頭。

0

outlet是代碼中的實例變量(在X代碼中),可以爲用戶界面對象(在Interface Builder中)分配一個引用。將用戶界面對象插入到實例變量中。該分配在由Interface Builder創建的NIB文件中指定。

相關問題