黑马程序员技术交流社区
标题: 作用域、点语法等知识总结 [打印本页]
作者: ZXY66452 时间: 2015-12-1 14:33
标题: 作用域、点语法等知识总结
本帖最后由 ZXY66452 于 2015-12-1 16:00 编辑
一、成员变量的作用域@public :在任何地方都能直接访问对象的成员变量
@private:只能在当前类的对象方法中访问
@protected(默认):能在当前类和子类的对象方法中直接访问
@package:只要处在同一个框架中,就能直接访问对象的成员变量
@interface和@implementation中不能声明同名的成员变量
在@implementation中声明变量,默认是@private的
二、点语法- 点语法的本质还是方法调用,不是调用成员变量
- 编译器遇到点语法时,会把点语法转成方法
//@property int ID;
- (void) setId:(int)newId;
- (int)id;
//@synthesize ID;
- (void) setId:(int)newId
{
_id = newId;
}
- (int)id
{
return_id;
}
调用
dog.id =1; //[dog setId];
NSLog(@"%d",dog.id); //[dog id];
三、构造方法- 用来初始化对象的方法,对象方法,以减号开头
- 为了让对象创建出来,成员变量就会有一些固定的值
- 重写构造方法的注意点:
- 先调用父类的构造方法([super init])
- 再进行子类内部成员变量的初始化
- + alloc 方法
- - init 方法
- 实际上是这么创建对象的
Person *p5 = [[Person alloc] init]; //先分配存储空间,再进行初始化
重写NSObject类的init方法(无参数)
- (id)init
{
//一定要调用回super得init方法:初始化父类中声明的一些成员变量和其他属性
if (self = [super init]) {
//初始化成功
_age =10;
}
returnself;
}
带参数的构造方法
- (id)initWithName:(NSString *)name andAge:(int)age
{
if (self = [super init]) {
_age = age;
_name = name;
}
returnself;
}
作者: liruixue 时间: 2015-12-1 15:43
笔记写的很细致,加油
作者: 明哥132 时间: 2015-12-3 00:21
有用,谢谢
作者: 杨立鹏 时间: 2015-12-3 10:22
总结的很好,很有用
作者: 灵韵依存 时间: 2015-12-3 11:00
谢谢 分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |