對屬性的深入理解
阿新 • • 發佈:2018-12-22
真正開發iOS剛好滿一年,這一年的過程就是囫圇吞棗般學習新知識,翻找部落格,把一些功能塞到程式中。雖說專案完成了好幾個,但是基礎還是相當薄弱。現在去看一些iOS的基礎部落格立即恍然大悟,對開發中碰到的一些難以理解的報錯有了深刻的理解。下面開始正題:
1.初用
從我學iOS開始,編寫一個控制元件、一個字串或是一個數組都是如下形式:
@property (strong, nonatomic) UILabel *resultLabel;
再後來需要在類中新增可變常量時,我都會選擇如下方式,編寫起來更加方便而且與類屬性分別開。
@implementation BakeCurveViewController { double leftAxisMax; NSInteger xAxisMax; }
或是
static BOOL isRelaOn = NO;
2.深入理解
@interface MyViewController :UIViewController
{
UIButton *myButton;//例項變數
}
@property (nonatomic, retain) UIButton *myButton;
@end
在iOS5以前,宣告一個屬性是需要同時宣告對應的例項變數的。iOS5後,蘋果就不再需要為屬性宣告例項變量了,它會自動為屬性生成一個以下劃線開頭的例項變數,即_myButton。同時也會自動生成setter、getter方法。
@synthesize在iOS4.4就已經被@property代替了,@synthesize的功能主要有2個作用:生成成員變數setter、getter方法;生成例項變數;所以現在@synthesize基本不再使用了
3.一些規範
對自己以後的程式碼規範:
1.如果只是一些簡單的私有變數,在implementation裡宣告,簡化程式碼並且閱讀性更強
2.公有屬性在.h檔案中宣告,可以被其他類呼叫
3.需要生成setter和getter的私有屬性,就在.m的interface中用@property宣告