学习IOS开发的第5天

今天学习了协议,协议类似于java里的接口,里面是方法的声明,没有实现,就像java中的抽象方法。协议用@protocol声明,一个类要遵循一个协议,必须实现里面用@required修饰或者没有修饰的方法,用@optional修饰的方法可以选择性地实现。我定义了一个CarSafe汽车安全协议,要实现这个协议,必须实现里面的brake刹车方法。例如
//汽车安全协议
@protocol CarSafe <NSObject>

@required
//刹车
-(void)brake;

@end
然后新建了一个BYD类继承Car类,同时BYD遵循CarSafe协议,所以它的声明文件这样写
//遵循汽车安全协议
@interface BYD : Car <CarSafe>

@end
然后在BYD的实现中,实现协议里的brake方法
#import "BYD.h"

@implementation BYD
//实现协议里的方法
-(void)brake{
    NSLog(@"汽车刹车");
}
@end
这样就实现了一个协议,假使我们需要一个实现该协议的实例,就可直接创建实现的该协议的类的实例。
        id<CarSafe> thing = [[BYD alloc] init];
        [thing brake];

总之,oc中的协议类似于java中的接口,比类更为抽象,使用协议可以降低程序间的耦合。

oc编程中常用的代理设计模式就是基于协议的。

除此之外,我还学习了内存管理。oc中有引用计数,每次创建或保存对象,它的引用计数都会+1,如涉及alloc、copy、retain时,引用计数都会+1。每次调用release方法只能让引用计数-1,当引用计数为0时,才会销毁对象。当我们把程序写到自动释放池里时,自动释放池释放时,只会向每个对象发送一次release方法,所以在程序中引用次数大于1时,还得在具体的位置手动调用release方法。

总而言之,如果创建一个对象使用了alloc、copy、retain,那么你就有义务向这个对象发送一条release或autorelease消息。

如果你不想手动管理内存,可以在创建工程时选择使用ARC,让程序帮你管理内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值