2012-04-15 22 views
-2

我有兩個關於Xcode的基本問題;我來自Windows後臺,主要是C#代碼。查詢Xcode文件的所有者和@property

一本書上的第一個示例項目讓我想起了一個單視圖應用程序,在視圖上放置了一個標籤和按鈕;拖動來創建一個起點和行動;最後在.m文件上,將代碼寫在按鈕操作上單擊以更改label.text。就是這樣:沒有設置文件所有者或@property

下一個例子,還添加了一個文本框和label.text獲取與textBox值更新;在這裏我注意到

  • (BOOL)textFieldShouldReturn:(*的UITextField)文本框{}

,如果我不拖文本框FileOwner不提高;這表示代理處理,我需要連接到fileOwner。這個假設是否正確? 在另一個例子中,教程實際上顯示我將一個按鈕連接到fileOwner - 爲什麼我需要它?

下一個問題:在第一個例子中,我可以更改label.text而不設置@property;我也可以從第二個例子中讀取文本框。在另一個例子中,它使用@propery代碼 - 我對@property的理解是它像一個在c#中的getter/setter;在c#中,我可以獲取或設置.text方法的textArea沒有任何其他設置;那麼爲什麼/何時使用@property。

我相信這很簡單,但我認爲我可能會將它與c#和vb進行比較。

更新:我試圖翻閱其他三本書,但沒有一本解釋我爲什麼要做某些事情(即鏈接到FileOwner)。我在玩代碼後在FileOwner上猜測了一下;但我不明白爲什麼一個按鈕必須鏈接到fileOwner。如果我拖動它來創建一個事件,我還需要做什麼?

對於@屬性我讀了原子/非原子,零售和我理解;我不明白的是,如果我可以讀/寫標籤textArea,爲什麼我需要@property呢?

改寫的問題:

如果我能得到/設置label.text = @ 「你好」;爲什麼我會爲該標籤創建@propery和synthesize?或爲用戶輸入的textArea?

下一頁:爲什麼教程要求我將一個按鈕添加到fileOwner?

回答

0

這個編程範例不是ios獨有的(如你的標籤所示),甚至是Objective-C。委託範式的存在使您可以在不修改原始類的情況下自定義類的行爲。因此,對於某些邏輯,該對象會向其委託人發出指示,以瞭解如何繼續。

C#屬性和objective-c屬性幾乎相同。它們都依賴底層的getter和setter方法來操縱類中存儲的(私有的或受保護的)值。你可以通過手動getter和setter方法來達到同樣的效果(這是大多數老式的C程序員在開始拾取objective-c時所做的事情,據我所知),但是你會失去一些名爲KVO(key-價值觀察)。這是objective-c中的一個系統,它允許您在屬性值更改時通過事件進行監視。你也會有一堆無意義的代碼......沒有人需要20個函數,它們都只是設置一個成員變量,所以在C#中有一個編譯器的快捷方式。在C#中,這是{ get; set; }模式,而在Objective-C中,它是@synthesize模式。

,從而爲你上面的例子,文字的文本字段的財產和textFieldShouldReturn是行爲。自定義行爲很大程度上由委託對象處理。 C#也有代表,因爲我相信你知道。它們就像函數指針一樣,允許您將函數設置爲變量。 Objective-c委託行爲就像通過代理對象(通常是ViewController,但不是任何方式)將一組函數設置爲一個變量(其中一些是可選的,其中一些不是)。

我希望這能爲你解決問題,我不是很善於把事情簡潔。我也來自Objective-C之前的C#背景,這就是爲什麼這個問題對我感興趣。

+0

嘿博爾登,感謝您的快速回復;這是很早的一個早晨,我有一個漫長的夜晚..我真的不明白答案,所以我可以重新提出我的問題:如果我可以設置label.text = @「你好」;爲什麼我要創建一個@propery並進行合成Next:爲什麼教程要求我向fileOwner添加一個按鈕?按鈕有哪些自定義行爲?如果我想編輯buttonText,我明白我需要創建一個Outset;但不明白fileOwner部分。 – 2012-04-15 05:54:45

+0

我不清楚你在問什麼。你可以設置label.text **,因爲它是UILabel的一個屬性。您不需要創建另一個屬性來執行此操作。我不確定你對整個fileOwner業務有什麼看法。文件所有者是通常來自XIB文件的短語。你在使用XIB嗎? – borrrden 2012-04-15 13:43:56

相關問題