簡體   English   中英

是什么描述了Objective-c / Cocoa中最好的“Outlet”?

[英]What describes an “Outlet” best in objective-c / Cocoa?

有人可以用人類可以理解的方式解釋“Outlet”是什么嗎?

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

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

編輯:我打算寫一篇關於這張圖片的完整博客文章(我在完成圖片后改變了主意),但即使是單獨的,也應該有助於澄清人們的出路。 干得好:

出口關系。
(來源: boredzo.org

從代碼的角度來看,IBOutlet只是Interface Builder的一個提示 它實際上是一個宏,編譯,甚至根本沒有。 也就是說,編譯時編譯器會完全刪除。

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

替代文字http://img27.imageshack.us/img27/5512/picture820090228.png

在此示例中, delegate是UIApplication的成員變量,它也是IBOutlet。

我只是把它想象成一個UI控件的指針。 一旦我在腦海中建立了這種心理聯系,那就有意義了。

IBOutlet關鍵字的定義如下:

#ifndef IBOutlet
#define IBOutlet
#endif

就編譯器而言,IBOutlet絕對沒有任何作用。 它的唯一目的是作為一個提示告訴Interface Builder這是一個實例變量,我們將連接到一個nib中的對象。 您創建並想要連接到nib文件中的對象的任何實例變量必須以IBOutlet關鍵字開頭。

我會說它們是將用戶界面對象連接到使用它們的代碼的橋梁。 顧名思義,它們為您的代碼提供了“插入”UI的位置。

IBOutlet是一個符號,它向Interface Builder指示一個對象實例變量delcared

IBOutlet id ivar_name;

應該作為相關類的實例的出口。 這允許您以圖形方式連接Interface Builder中的對象,以便在加載NIB之后(即,當對象發送-awakeFromNib消息時),ivar_name的值將是指向您在Interface中選擇作為插座值的對象的指針生成器。

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

出口是代碼中的實例變量(在X代碼中),可以為其分配對用戶界面對象的引用(在Interface Builder中)。 您將用戶界面對象插入實例變量。 分配在Interface Builder創建的NIB文件中指定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM