2012-05-08 47 views
0

在Objective-C中,我可以創建類別來擴展類。我也可以爲它們添加屬性,因爲它們基本上只是方法。但是我不能用@synthesize或其他任何我知道的方式來綁定它們。因此,只要我嘗試使用它們,應用程序就會崩潰。Objective-C類別和屬性

在類別中是否有任何屬性使用,或者它們只是可能的,因爲它會打破語言的邏輯來禁止它們。你能否給我一個場景來定義一個類別中的屬性會有意義?

+2

見我的回答對您的其他問題:http://stackoverflow.com/questions/10502539/objective-c-category-and-new-ivar(爲什麼你問兩次基本相同的問題?) –

+0

謝謝。我認爲,除了解決我的具體問題之外,對於類別中的哪些屬性是有利的,還可能會有一個更一般的問題,這也許會很有趣。然而你的答案似乎已經提供了兩個。 :) –

+0

[Objective-C:Property in Category]的可能重複(http://stackoverflow.com/questions/8733104/objective-c-property-in-category) – hfossli

回答

1

在類別中定義屬性的主要用途是創建類的擴展,當我們創建類擴展的時候有類的幫助,那麼我們可以定義屬性併合成它們。這是實現隱藏屬性的方法公共訪問。

您可以檢查此瞭解更多信息 - http://www.techpaa.com/2012/04/adding-properties-to-categories-and.html

+0

類別不是擴展名:http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html – giorashc

+0

刪除downvote作爲您的答案確實解決問題,但我仍然主張不支持屬性的類別 – giorashc

+0

相關對象!=屬性 – isaac

0

The Objective-C Programming Language引導

一個類別可以讓你的方法添加到現有的班級,甚至到一個 對你沒有來源。類別是功能強大的 功能,允許您擴展現有的 類的功能,而無需進行子類化。

既然要

屬性添加到它們,因爲它們基本上只方法

您可以使用類的方法添加到類。

+0

以及用於類擴展的類別是什麼。 – rishi

+0

@ rishi文檔中顯示「類擴展類似」。這意味着班級擴展和類別是兩個不同的東西 –

+1

班級擴展和類別確實非常不同。在擴展中,我可以定義一個屬性,然後將其合成。在一個類別中,我無法綜合這些屬性。但是我也不能創建ivars,所以我也不能真正爲自己實現getter和setter。 –