OC核心语法(1)点语法、变量作用域、@property@synthesize和id
来源:互联网 发布:评价刘雯 孙菲菲 知乎 编辑:程序博客网 时间:2024/05/22 04:26
一、点语法
1.本质:
点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法。
切记点语法的本质是转换成相应的set和get方法,如果没有set和get方法,则不能使用点语法
如:
Stu.age=10; 展开为:[stu setAge:10];
int a=stu.age; 展开为:[stu age];
编译器如何知道是set方法还是get方法?主要是看赋值(可以使用断点调试来查看)
在OC中访问成员变量只有一种方式即使用-> 如stu->age,这种情况要求在@public的前提下
2.使用注意: set和get方法中的死循环
1>在set方法中,self.age=age;相当于是[self setAge:age];
2>在get方法中,return self.age;相当于是[self age];
二、变量作用域
1.变量作用域的四个关键字
1>@public (公开的)在有对象的前提下,任何地方都可以直接访问。
2>@protected (受保护的)只能在当前类和子类的对象方法中访问
3>@private (私有的)只能在当前类的对象方法中才能直接访问
4>@package (同一框架内)作用域介于私有和公开之间,只要处于同一个框架中就可以直接通过变量名访问
2.注意点
1>在@interface声明中自定义变量类型是 @protected
2>在@implementation实现中自定义变量类型是 @private
3>@implementation不能定义和@interface同名的成员变量
三、@property和@synthesize
1. @property关键字
可以自动生成某个成员变量的setter和getter的方法声明
@property int age; // 会自动生成_age成员变量
// int是get方法的返回值类型和set方法的形参类型。 age是set形参名和get的方法名
自动生成
- (void)setAge:(int)age;- (int)age;
2. @synthesize关键字
自动生成set方法和get方法的实现,并且会访问_age这个成员变量
@synthesize age = _age; // 代表形参age会访问_age这个成员变量,如果无_age,则会自动生成
- (void)setAge:(int)age{ _age=age;}- (int)age{ return _age;}
@synthesize age; // 代表默认访问age成员变量,如果没有,则自动生成age成员变量//如果_age在类中不存在,则会自动生成@private类的age
注:如果手动实现了setter方法,则编译器就只会自动生成getter方法
如果手动实现了getter方法,则编译器自动生成setter方法方法
3.注意点
方法调用时,会优先调用手工编写的方法,如果没找到再调用自动生成的方法。
@property会自动生成_成员变量名。
@property age; // 自动生成_age,类型是@private;
@synthesize 会自动生成 成员变量名。
@synthesize age; // 自动生成age,类型是@provate;
四、id
1.概念:万能指针,能指向或操作任何OC对象。
2.注意:已经包含了* ,在调用时不需要加* ,相当于NSObject *
// id 类型的定义typedef struct objc object{Class isa;} *id;
- OC核心语法(1)点语法、变量作用域、@property@synthesize和id
- 黑马程序员——OC基础---核心语法(点语法,成员变量的作用域,@property和@synthesize)
- OC核心语法——点语法、作用域、property和synthesize
- OC之点语法、成员变量作用域、@property和@synthesize
- OC基础---NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- OC_NSString,点语法,成员变量作用域,@property和@synthesize,id笔记
- Objective-C—self 、super、点语法、成员变量的作用域、@property和@synthesize、id
- OC中的点语法,成员变量,@property和@synthesize:id类型,构造函数
- OC语言——点语法和成员变量的4种作用域及property和synthesize的使用
- 黑马程序员——OC语言------NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- OC基础-Xcode+点语法+变量作用域+@property/@synthesize
- oc点语法和@property @synthesize
- OC--语法变量声明synthesize和property
- OC点语法、@property、@synthesize
- OC特有语法1—点语法,成员变量作用域,@property,id,构造方法,多文件编程
- OC特有语法1—点语法,成员变量作用域,@property,id,构造方法,多文件编程
- 【Objective-C学习笔记】核心语法——实例变量作用域、关键字@property和@synthesize
- 黑马程序员_iOS开发之OC之面向对象之多文件操作、点语法、成员变量的作用域和关键字@property与@synthesize
- unable to run app in simulator
- 将枚举类型转化为字符串
- 自定义UISearchBar注意的问题
- 数字签名是什么?
- java中Scanner类的用法
- OC核心语法(1)点语法、变量作用域、@property@synthesize和id
- 【Linux】Linux中目录结构说明
- [openstack]nova-docker现状
- UnknownFaceted Project Problem (Java Version Mismatch)
- UI基础
- Interpreter模式(C++解释器模式)
- 设置linux时区和同步时间
- IAR编译错误 Error[e27]:
- UVA - 673 Parentheses Balance