準備 iPad 開發,由於使用IOS SDK 4.3 , 很多老的書的介面與此不符,只好看英文的說明了。
一篇小小的 HelloWorld 居然看了 n 個小時。。。。。。寫了快30年程式了,實在汗顏。
痛點有三:
1 介面不熟 (IOS SDK 4.3 變化較大)
2 語言障礙 (英語還是不如母語呀)
3 程式架構 (完全不瞭解)
打算每天寫些,希望能對剛開始用IOS SDK 4.3 的同學們略有協助。
https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhone101/Articles/00_Introduction.html
iPhone101.pdf
P25 有這樣一行語句
@synthesize myViewController=_myViewController;
P26 是這樣說明的
You use the “_” prefix for the instance variable to serve as a reminder that you shouldn’t access an instance variable directly. From an academic perspective, this helps to preserve encapsulation, but there are two important practical benefits in Cocoa:
● Some Cocoa technologies (notably key-value coding) depend on use of accessor methods, and in the appropriate naming of the accessor methods. If you don’t use accessor methods, your application may be less able to take advantage of standard Cocoa features.
● Some property values are created on-demand. If you try to use the instance variable directly, you may get nil or an uninitialized value. (A view controller’s view is a good example.)
字典中 synthesize 的意思是“綜合,使合成;人工合成”
在這裡 synthesize 的作用應該是產生 get 和 set 方法。而後面的變數增加底線只是為了在使用這個成員變數時,確保使用 get 和 set 方法,而不是直接存取。其實也可以寫成:
@synthesize myViewController
不過,如果寫成上面這個樣子,就無法從字面上確定像以下這樣的語句,調用的是 get 和 set 方法,還是直接存取成員變數了。
self.myViewController = aViewController;
如果寫成 @synthesize myViewController=_myViewController; 則很容易區分。
self.myViewController = aViewController; // 使用 set 方法
self._myViewController = aViewController; // 直接存取成員變數
摘自 pingjiang2003的專欄