ios开发专题

iOS 通过协议提供匿名对象

2020-10-15  本文已影响0人  zl520k

这个专题主要讲通过协议提供匿名对象,主要就是以匿名对象来表示从另一个类中返回对象,因为不同的对象处理的问题不一样。

协议代码如下:

@protocol CarProtocol

-(void)carDriver;

@end

遵从CarProtocol协议的类,就是具体的车子代码如下:

//.h文件实现

@interface CCar:NSObject<CarProtocol>

@end

//.m文件实现

#import"CCar.h"

@interface CCar()

@end

@implementation CCar

//实现协议中开车方法

- (void)carDriver {

NSLog(@"carDriver");

}

实现车子的工厂方法如下:

@interface CCarFactory:NSObject

+ (instancetype)shareInstance;

/**通过协议提供匿名对象,返回的车具体不知道是什么类型,我们不关注,只要是车就行**/

- (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

这样只要调用工厂类CCarFactory,然后根据传入的不同类名,就可以创建不同类,,还有CCarFactory只是一个中转站,组装还是要看各个实现的方法。

在不同的地方使用如下:

id<CarProtocol> = [[CCarFactory shareInstance] createCarWithName:@"火车"];

[car carDrive];

主要讲的就是匿名类的调用,具体的类型不重要。

上一篇下一篇

猜你喜欢

热点阅读