//汽車安全協議
@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,讓程序幫你管理內存。