美文网首页ios开发专题
iOS 通过协议提供匿名对象

iOS 通过协议提供匿名对象

作者: zl520k | 来源:发表于2020-10-15 11:45 被阅读0次

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

    协议代码如下:

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

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

    相关文章

      网友评论

        本文标题:iOS 通过协议提供匿名对象

        本文链接:https://www.haomeiwen.com/subject/fbmnpktx.html