這個(gè)專題主要講通過(guò)協(xié)議提供匿名對(duì)象挎峦,主要就是以匿名對(duì)象來(lái)表示從另一個(gè)類中返回對(duì)象遵湖,因?yàn)椴煌膶?duì)象處理的問(wèn)題不一樣泳桦。
協(xié)議代碼如下:
@protocol CarProtocol
-(void)carDriver;
@end
遵從CarProtocol協(xié)議的類景用,就是具體的車子代碼如下:
//.h文件實(shí)現(xiàn)
@interface CCar:NSObject<CarProtocol>
@end
//.m文件實(shí)現(xiàn)
#import"CCar.h"
@interface CCar()
@end
@implementation CCar
//實(shí)現(xiàn)協(xié)議中開(kāi)車方法
- (void)carDriver {
NSLog(@"carDriver");
}
實(shí)現(xiàn)車子的工廠方法如下:
@interface CCarFactory:NSObject
+ (instancetype)shareInstance;
/**通過(guò)協(xié)議提供匿名對(duì)象盗迟,返回的車具體不知道是什么類型坤邪,我們不關(guān)注,只要是車就行**/
- (id)createCarWithName:(NSString*)carName;
@end
@implementation CCarFactorystaticidinstance
+ (instancetype)shareInstance {
staticdispatch_once_tpredicate;
dispatch_once(&predicate, ^{?
?instance = [[CCarFactory alloc] init];?
?});
return ?instance;
}
- (id<CarProtocol>)createCarWithName:(NSString*)carName {?
if(carName iseqstring:@"CCar"){
?CCar *car = [[CCar alloc] init];?
? [car?carDriver];
? return car;
}
return nil;
}
@end
這樣只要調(diào)用工廠類CCarFactory诈乒,然后根據(jù)傳入的不同類名罩扇,就可以創(chuàng)建不同類,怕磨,還有CCarFactory只是一個(gè)中轉(zhuǎn)站喂饥,組裝還是要看各個(gè)實(shí)現(xiàn)的方法。
在不同的地方使用如下:
id<CarProtocol>?= [[CCarFactory shareInstance] createCarWithName:@"火車"];
[car carDrive];
主要講的就是匿名類的調(diào)用肠鲫,具體的類型不重要员帮。