2015-07-20 59 views
-2

我想問問它是否建議將類別中的屬性添加到目標C類中。如果一些官方的蘋果鏈接可以共享,那麼它會很棒。在Objective C類別中添加屬性

感謝

+1

[目的-C的可能重複:屬性/實例變量在類別](http://stackoverflow.com/questions/8733104/objective-c-property-instance-variable-in-category) – dan

回答

-3

不能屬性類別添加。我認爲這與處理內存的方式有關。將實例變量添加到已存在的對象將改變對象的大小。

+0

多數民衆贊成在不正確的 - 你當然可以添加計算屬性和通過leverging運行時甚至存儲了屬性 –

+0

這是完全正確的,因爲他詢問屬性是否可以添加到一個類別中。他並沒有問,屬性是否可以(明確地或隱含地)在一個類別中合成。 –

+0

那麼你可以添加setter任何getter,但你不能分配內存的權利?除了在方法中... –

-1

你可以很容易地做到這一點 - 如果蘋果這樣做,我不知道。他們經常暴露屬性在類別雖然..

無論如何,如果它對你的設計有意義,繼續!請記住,雖然您可以添加屬性,但不能將變量添加到現有類。

所以無論是已經計算性能,是一種方便的包裝「圍繞現有功能或使用相關的存儲

-1

你可以用相關的對象,這增加變數。雖然這不被推薦。這個鏈接有你需要知道的一切。

http://nshipster.com/associated-objects/

科出來的博客:

關聯的對象應被視爲最後手段的方法,而不是在尋找一個問題的解決方案(真的,類別自己真的不該開始時不在工具鏈的頂部)。

2

首先我想說Peter Segerblom的回答不正確。但是,Daji-Djan的評論可能是誤導性的。

從一開始:

聲明的屬性是完全的兩個聲明(一個 - 爲只讀屬性)的方法。期。

  • 這意味着它是一個聲明
  • 這意味着它指的是方法

因此,您可以在類別中添加聲明屬性。

但是,如果屬性顯式或隱式(蘋果:自動)合成,它將合成一個伊娃,如果沒有。 這個是不可能的,因爲它會改變實例對象的內存佔用和一個時間點,實例對象已經被分配。

所以你必須做以下的事情之一:

  • 已經有伊娃。 (什麼使它有點沒有意義)
  • 沒有綜合聲明的屬性。

然而,這可以是用於計算性質是有用的,對於屬性,其值被存儲在另一個對象,屬性,其值被存儲爲關聯的對象,用於...

+1

謝謝,確實比我的評論好聽多了 –