OC期末复习

四、Foundation框架一
1.Foundation是OC语言的基础类库。此框架中的类都以“NS”为前缀

六、内存管理
1.引用计数。所有的OC对象都有一个计数器,这个计数器我们称为引用计数(retainCount)。引用计数表示有几个人在使用当前对象。

2.调用retain方法计数+1,调用release方法计数-1.

3.当一个所有者做了alloc,retain,[mutable]copy中的任一动作,它就拥有了一个对象的所有权。而使用release或者autorelease就可以释放对象所有权。

4.如果一个对象被添加到数组,那么该对象就会被该数组retain,计数+1.

5.当自动释放池销毁时,他会对池子中的每一个对象调用一次release方法。

6.如下代码有内存泄露

[person setDog:[[Dog alloc] init]];

正确示范:

Dog *dog = [[[Dog alloc] init] autorelease];
[person setDog:dog];
//这⾥不能[dog release];

7.黄金法则:如果创建一个对象使用了alloc、copy[mutable]、retain,那么你就有义务向这个对象发送一条release或者autorelease消息。

8.类方法创建和alloc方法创建对象的区别在于类方法加入了自动释放池,所以如果用类方法创建的对象不能调用release方法。

//alloc方法
Laptop *laptop = [[Laptop alloc] init];
laptop.name = [NSString stringWithFormat:@"apple"];
NSArray *array = [NSArray arrayWithObject:laptop];
[laptop release];
//类方法
Dog *dog = [Dog dog];
[person setDog:dog];
//这⾥不能[dog release]

最后:考题:
1.
在这里插入图片描述
NSMutableSet不可以有重复元素,所以只能有4个元素。

2.数组是有序存储的,集合是乱序存储的,字典是以键值对的形式存储的,所以他们存储数据的方式是不同的。

在这里插入图片描述
上面这道题中,key是“左护法”,“右护法”,“老大哥”,value分别是“张三”,“李四”,“唐sir”。就是value在前,key值在后。

4.OC不支持多继承。

5.协议中@required是默认调用的,所以有时候也可以说我们可以不用关键字定义协议中必须实现的方法。

6.retain一般适用于OC中的对象;assign一般适用于非OC对象,如int等基本数据类型;copy一般适用于NSString等不可变的对象,因为是重新创建了对象,并且内容不变,因此不用担心后面的操作对该属性的值产生影响。

7.委托(delegate)是协议的沿用,它的属性最好声明成assign。因为一个对象没必要去管理自己delegate的生命周期,或者说没必要拥有该对象,所以我们只要知道它的指针就可以了,用指针找到对象去调用方法,也就是委托实现的感觉

8.和retain相对应的关键字是release

9.OC中方法名是函数名+冒号+参数标签,下面是几种情况:

  • (double)pi;

这个很好理解,方法名就是 pi

  • (int)square:(int)num;

带参数的方法名有点特殊了
首先说冒号“:”,冒号后面的一定是参数
可以理解成,有几个冒号,就有几个参数
把空格后面到参数前面的内容拼起来(不算类型),就是方法名
那么,这个方法的方法名就是square:,(注意:是有冒号的)

  • (int)addNum1:(int)num1 addNum2:(int)num2;

根据上面的方法
这个方法的方法名就是 addNum1:addNum2:

其实很好理解,就是把每个参数的描述加上冒号拼接到一块,组成方法名,方便阅读
出处

10.KVC是Key-Value Coding。是一种间接访问对象属性的机制,使用字符串识别属性,而不是通过调用一个访问器方法或直接访问实例变量。

11.类目可以为所有的类添加新方法。

12.在类的实现文件.m中定义类目,叫延展

13.类目的局限性:
1)类目可以覆写现有类的方法,覆写后原始方法无法调用
2)类目不能为类扩展实例属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值