2012-08-05 217 views
2

我開始與obj-c,並有幾件事我沒有得到。聲明或不聲明在目標c

首先是我(哦,我來自AS3編碼的角度)認爲,如果你想在你的類中有一個變量,你需要首先在頭文件中用@property運算符聲明它,然後.m文件中的@synthesize,還必須在頭文件中聲明該方法,但是我遇到了只在.m文件的方法中定義變量而沒有任何聲明的情況,而且同樣的方法,直接寫入.m文件中的方法沒有聲明,它們工作正常。

那麼@ property/@合成變量和聲明頭文件中的方法有什麼意義?這與範圍有關嗎?

+0

所有的實例變量不需要做成屬性。 – 2012-08-05 13:26:06

回答

3

你所談論的是不是提到了聲明的變量通過一個getter和一個setter從類之外揭露它。

的@財產/ @合成只是一個快捷方式自動創建兩個方法,這是

  • - (void) [class setVariable:(type)var]
  • - (type) [class variable]

,可以設置和獲取來自其他類的變量。

並非每個變量都需要從課外設置或獲取。

1

頭文件(.h)文件應該包含你想要的其他類要知道這個類的其他類。類擴展 - .m文件中的接口部分 - 是私有聲明的好地方。 (如果一個方法是使用之前定義的,即作爲聲明它不是最佳的,但它的工作原理。)

1

有Objective-C中的變量三大類:

  • 實例變量
  • 靜態範圍變量(靜態,全局和函數靜態)
  • 自動範圍變量(當地人和函數/方法的參數)

在聲明和合成prope rty,實例變量是爲您創建的。另一方面,局部變量在代碼塊的範圍內聲明,不能通過屬性聲明。