iOS 通过协议提供匿名对象

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

协议代码如下:

@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];

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容