OC基础语法<1.3> 入门面向对象语法-self、new、 @property和synthesize
2014-11-25 00:43
246 查看
一:变量的作用域
默认是protected的@public 全局都可以访问
@protected 只能在类内部和子类中访问
@private 只能在类内部访问
注意:私用方法的实现很简单,只需要实现在.m文件中,而没有在.h文件中声
二:self关键字
在对象方法中 self代表你这个当前对象,相当于java中的this- (void)text1 { int age = self.age; }在类方法中 self就代表这个类名,就是下面例子中调用text2这个方法的类
+ (void)text2 { [Student alloc] = [self alloc] }//总结在一起 ,
就是谁调用这个方法self就指向谁无论是类还是对象
注意:不要在set,get中调用self,因为分辨不清楚容易造成死循环
三:new关键字
new相当于即分配了内存,又实现了init构造方法Student *stu = [[Student alloc]init]; //相当于 Student *stu = [Student new];
我们现在一般用以前的语法,因为new是后来加入的,而且没有以前的语法层次清晰,
并且new的话没办法调用自己写的构造方法
四:@property和@synthesize
@property 关键字表示自动生成成员变量的set和get方法的声明,只用在@interface关键字里面@property int age ; //相当于 //-(void)setAge(int)age; //-(int)age;@synthesize 关键字表示自动生成实现成员变量的set和get方法的实现,可连着一起写只用在@implementation 关键字里面
@synthesize age ,name
@synthesize age; /* 相当于 -(void)setAge(int)newAge { age = newAge; } */为了防止混淆我们可以写成这样
@synthesize age = _age;
注意!!!
1:编译器会先判断synthesize 关键字的存在,根据你定义的成员变量找同名的成员变量,具体如下
如果写了@synthesize age;那么成员变量 int age;就可以可以省略了,系统找不到同名的成员变量,会自动生成一个同名变量,并且是私有的,相当于在.m文件中加了一个int age;就像本例中如果现在你在.h中定义了一个_age的成员变量,没有定义age,但是synthsize中的成员变量你写的是age 那么自动生成的成员变量会是age而不是_age
2:如果你写成了@synthesize age = _age ,编译器会找_age这个成员变量,如果找不到就会自动生成,只不过是私有的(看不懂这句可参考下面)
现在的新版本synthesize我们也不用写 ,只需要在.h中声明一个变量,实现方法会自动生成
/* @property int age ; 不写synthesize方法会默认生成@synthesize age = _age; 所以说他会自动生成的成员变量是_age,但是是私有的,如果想变成公共的就需要在继承类后面的{}中声明一下 eg { int _age; } */总结:来说以后我们如果不确定的话最好不要在.h文件中把
{ int _age; NSSting *_name; }省略,这样synthesize 就会调用你这里面的成员变量,然后这个@synthesize关键字一开始最好不要省略,当然根据需求set和get方法有时也需要手动写
相关文章推荐
- OC基础语法<1.2> 入门面向对象语法-构造方法和description
- OC基础语法<1.1> 入门面向对象语法-OC类、点语法
- OC面向对象语法<三>
- OC面向对象语法<四>
- OC面向对象语法<一>
- [黑马IOS自学第十一篇]OC语言基础,SELF关键字,面向对象概念,类学习多态,继承@property等
- OC面向对象语法<二>
- 黑马程序员_Java语法及面向对象基础<一>
- OC基础语法学习2:面向对象中的特点
- OC学习--<猜拳游戏> 之 通过面向对象思想实现
- 面向对象基础<二>---继承
- 黑马程序员-OC语言基础:面向对象语法 三
- 黑马程序员-IOS-OC基础-面向对象语法二
- 黑马程序员-OC语言基础:面向对象语法 四
- OC学习--<猜拳游戏> 之 通过面向对象思想实现
- 程序员_Java基础<一>-面向对象上
- OC学习--<猜拳游戏> 之 通过面向对象思想实现 2.0版本
- 面向对象基础<一>
- java 从零开始,学习笔记之基础入门<对象_属性>(二)
- 黑马程序员——OC基础---面向对象语法