1. 程式人生 > >對屬性的深入理解

對屬性的深入理解

真正開發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宣告