iOS小白进阶之旅(二)

方法
系统提供的init方法只会为实例变量赋默认值,没有意思,如果想在初始化阶段给实例变量赋值,需要自定义初始化方法

Student *stu = [[Student alloc] initWithName:@"Duck" age:20 number:9527 score:65.6];

什么样的才叫做对象?
OC的类定义的指针变量都可以间接的叫做对象,不管有没有存储堆区空间的地址

实例变量默认可见度是@protected.
1.为什么不默认@public?
@public,公开的,会暴漏内部实现细节,外界可以随时更改实例变量的数据,不安全,违背了封装的特性
2.为什么不默认@private?
@private,私有的.只能本类文件中访问,子类文件访问不了,违背了继承的特性

实例变量可见度是@protected,外界无法通过->访问实例变量,如果想变量赋值,或者获取实例变量的值,需要Person类给外界提供赋值以及取值的方法.(接口)

为”单一”实例变量赋值的方法叫做setter方法(设置器).
获取”单一”实例变量值的方法叫做getter方法(访问器).

setter方法命名规范:
- 号方法 无返回值 set开头+对应的实例变量名(首字母大写) 有且只有一个参数,参数的类型和实例变量类型相同,参数名和实例变量名相同.
getter方法命名规范
- 号方法 有返回值,返回值类型和实例变量类型相同, 方法名和实例变量名相同,无参数
这里说的实例变量名是去掉下划线的.

id 泛型,和void *类似,代表对象的地址.

@class 声明后面的字符串可以当做类来用.

初始化 – 是在对象空间开辟之后立即给实例变量赋值,叫做初始化.
虽然提供了很多的初始化方法,但是对于一个对象来说只能调用一个初始化方法,因为一个对象初始化阶段就只有一次.

方法嵌套调用:
1.+号方法中调用另外一个+号方法: [类名/self 方法].

+ (void)test1 {
    //调用test2
    //[Person test2];
    [self test2];
}

2.-号方法中调用另外一个-号方法: [self 方法].

- (void)test3 {
    //调用test4
    [self test4];
}

3.-号方法中调用另外一个+号方法: [类名/[self calss] 方法].

- (void)test4 {
    //调用test1
    //[Person test1];
    [[self class] test1];//[self calss] 获取对象所属的类
}

4.+号方法中调用另外一个-号方法: 创建对象调用方法

+ (void)test2 {
    //调用test3
    Person *per = [[Person alloc] init];
    [per test3];
}

类是一个抽象的概念,用来创建对象,对象才是具体的,所以类不占空间,只有对象才占空间,只有对象的空间有了,实例变量才会有空间,所以在+(类)方法中无法访问实例变量.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值