2013-05-02 20 views
0

如何快速知道要將哪個屬性添加到@property如何簡單地選擇@property的屬性?

我得到了它的@property (strong)@property (weak),我認爲:strong如果類「擁有」參照的實例; weak如果它只是一個對象的引用,它的存在不會被管理到我們當前的類。

如果該屬性是通過從Interface Builder中拖放創建的,則有時候會有大量隱藏的unretain_unsafe左右。這聽起來那麼複雜我,但我相信的Xcode知道它做什麼...

  • 我也有種明白retainassign是一種過時......

  • 而且它是更好的(強制)使用copyNSString屬性...

  • 但是,如果我想有什麼@propertyintenum

  • 如果我的@property指向單例,我應該選擇weak屬性嗎?

您看到:這些屬性的問題太多了!

我認爲這將是很好有這些屬性的簡短而明確的解釋,這裏的一些成員做:)

回答

2

的幾個注意事項沒有特定的順序

  • weak有當被引用對象被釋放時被刪除的附加功能,所以你永遠不會留下指向垃圾的懸掛指針
  • 這不是強制使用copy語義與NSString財產,但強烈建議。雖然NSString是不可變的,但您的屬性可能被設置爲可變字符串子類,所以如果您不希望它從您下面更改,則應該使用copy
  • 標量屬性類型的經驗法則非常簡單:它們沒有引用計數,所以strongweak都不適用。但他們可以是readonlyreadwrite,這取決於你需要什麼。
+0

所以:對於標量屬性,我可以(應該)不放置任何屬性。我想這相當於'readwrite'。感謝你的回答,這是好的一點(我不知道他們,特別是第1點和第2點)! – Colas 2013-05-02 18:22:44

+0

@Colas:他們應該仍然是財產,但你不應該選擇任何所有權行爲(強/弱/複製),因爲沒有所有權。 'readwrite'是一個不同的問題,這是屬性是否可以改變,並且是對所有屬性作出的有效選擇。 – 2013-05-03 03:28:55

+0

我會補充說'copy'應該用於任何和所有可複製的對象,而不僅僅是字符串。 – 2013-05-03 03:33:38