iOS中的self訪問對象屬性和下劃線實例變量的區(qū)別
具體見:[告訴你使用self.var 和 _var的區(qū)別][1]
[1]:http://ios.jobbole.com/84456/
self.是對屬性的訪問,而下劃線是對實例變量的訪問揭绑。屬性用@property關(guān)鍵字聲明疾忍,它包含了對實例變量讀寫的get霍狰、set方法永脓。在iOS5以后使用@property聲明屬性時皮官,編譯器會自動(@sytheszie var = _var)為我們生成對應的一個以下劃線加屬性名的實例變量毅贮,還有其對應的getter间驮、setter,下劃線是包括在變量名里的铛碑。
在.m文件中可以通過下劃線來訪問實例變量狠裹,但是getter、setter不會被調(diào)用汽烦,而來自外部的訪問則需要通過getter涛菠、setter。
重寫get/set方法時不能使用self撇吞,不然會進入死循環(huán)俗冻,因為self訪問屬性時會觸發(fā)屬性個get/set方法。
一般在開發(fā)過程中牍颈,在對象內(nèi)部讀取值時迄薄,直接通過實例變量來訪問(下劃線),設(shè)置值時煮岁,使用屬性的setter來賦值(self.)噪奄。
@optional和@required的區(qū)別
在定義協(xié)議時死姚,使用@optional的方法不是必須實現(xiàn)的方法,可選勤篮,而使用@required的方法是必須要實現(xiàn)的。
純代碼定義導航欄
在AppDelegate.m文件中添加如下代碼:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
_window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
_window.backgroundColor = [UIColor whiteColor];
//自定義的主頁
MainViewController *mainVC = [[MainViewController alloc]init];
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:mainVC];
_window.rootViewController = nav;
[_window makeKeyAndVisible];
return YES;
}