[英]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.