iOS中的self访问对象属性和下划线实例变量的区别
具体见:[告诉你使用self.var 和 _var的区别][1]
[1]:http://ios.jobbole.com/84456/
self.是对属性的访问,而下划线是对实例变量的访问。属性用@property关键字声明,它包含了对实例变量读写的get、set方法。在iOS5以后使用@property声明属性时,编译器会自动(@sytheszie var = _var)为我们生成对应的一个以下划线加属性名的实例变量,还有其对应的getter、setter,下划线是包括在变量名里的。
在.m文件中可以通过下划线来访问实例变量,但是getter、setter不会被调用,而来自外部的访问则需要通过getter、setter。
重写get/set方法时不能使用self,不然会进入死循环,因为self访问属性时会触发属性个get/set方法。
一般在开发过程中,在对象内部读取值时,直接通过实例变量来访问(下划线),设置值时,使用属性的setter来赋值(self.)。
@optional和@required的区别
在定义协议时,使用@optional的方法不是必须实现的方法,可选,而使用@required的方法是必须要实现的。
纯代码定义导航栏
在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;
}
网友评论