2011-05-29 60 views
0

我對C和Objective-C相當陌生,以前曾經教過Python。就這點而言,C家族的一些事情讓我大跌眼鏡。我看各地的網絡,得到的書籍,瀏覽這裏的論壇,但有些東西依然纏着我...Objective-C指針和屬性

  1. 我明白在理論上變量與指針(一個返回值,其他返回系統中值的地址。)我不明白什麼時候適合使用一個。有什麼建議?

  2. 當聲明一個類時,什麼是屬性?看起來像屬性和類變量是相同的,但我知道必須有一些關鍵的區別。

@interface testViewController : UIViewController {

IBOutlet UILabel *label; 
    IBOutlet UIImageView *uiImageView; 
} 

@property (nonatomic, retain) IBOutlet UILable *label; 

@property (nonatomic, retain) IBOutlet UIImageView *uiImageView; 

@end 

如果可能,雖然可能性不大,可能你比較到Python回答?我知道Objective-C和Python是白天和黑夜,但無論你能想到什麼都會很棒。

我得到的書籍來自Apress:在Mac上學習C,在Mac上學習Objective-C,爲絕對初學者學習iPhone和iPad應用程序。

我真的很感激任何幫助!

+2

Objective-C和C是非常不同的語言。請選一個! – 2011-05-29 16:10:12

+3

這個問題涵蓋了很多地方。 (另外,一些基礎,即屬性已經被很好的覆蓋。)當StackOverflow的問題簡潔並且集中在單個具體問題上時,問題會更好。這個想法是,這個問題將對未來的讀者和你有用。請編輯並下載更多重點問題。 – 2011-05-29 19:59:39

+0

heh。對於那個很抱歉。正式指出。 – GaleDragon 2011-05-31 04:08:40

回答

1
  1. 我明白在理論上變量與指針(一個返回值,另一個回報在系統中的地址值。)什麼時候適合使用一個比其他什麼我不明白的是。有什麼建議?

與Java,Python和.NET不同的是,所有變量都是可以傳遞的「指向對象的指針」,在C中,事物可以存在於兩個地方。

在程序代碼中(變量在代碼被命中時出現,當函數返回時消失)。像這樣:

int my_arr[3]; 

,或者在「堆」,這是存儲器,它被動態地請求這樣的程序不是一個部分:

int *my_arr_pointer = malloc(sizeof(int) * 3); 

第二個例子是接近如何使用Java,Python和.NET通過。然而,當你使用malloc()來獲取內存時,你需要稍後使用free()...或者你的程序吸收並浪費計算機內存。所以使用技巧來確保您使用一致的內存量。使用第二個編寫更靈活的應用程序。 C沒有內存管理,這就是爲什麼第一種方法使得更快,更易於調試的程序......這要求在函數之間複製事物,而第二種方法則更容易在程序增長和縮小大小......但寫起來稍微複雜一些。使用適當的東西。

3.聲明一個類時,什麼是屬性?看起來像屬性和類變量是相同的,但我知道必須有一些關鍵的區別。

屬性是類變量的包裝。一個「setter」和一個「getter」。這使您可以:

a)使用斷點找出其中在您的代碼中正在設置該變量。

b)檢查安全性或權限,或者驗證設置的值。

c)屬性不必綁定到變量。當數據動態生成時,它可以創建它的「幻覺」。例如size屬性可能會在您詢問時計算字符串中的字母,而不是存儲它。

d)更高的靈活性,在不改變訪問該屬性的所有內容的情況下更改該類。