美文网首页iOS Developer
Swift 泛型函数的一个特定的简单场景使用

Swift 泛型函数的一个特定的简单场景使用

作者: WonderChang | 来源:发表于2016-07-20 23:10 被阅读343次

在Objective-C常用id<**Delegate>来应用一些定义的代理协议类,在业务逻辑处理的类中采用注册类([XXHandler class])的方式做为一个处理器类的实例引用,如下:

- (void)registeConfigurationClass:(__unsafe_unretained Class)className
{
    self.configuration = [[className alloc] init];
}

但在Swift如果用AnyClass来实例化对象则需转为指定类的Type,才能进行实例化,如下:

    let anyClass: AnyClass = xxx
    let viewControllerClass: UIViewController.Type = anyClass as UIViewController.Type
    let viewController = viewControllerClass()

故而通过以上途径是否不能解决?还好我们有泛型函数,定义了一个名为regsiterClass的泛型函数,来注册一个处理器类:

protocol WDHandleProtocol {
    func generateSomething() -> String
}

class WDResponder: NSObject {
    
    var handler: WDHandleProtocol?
    
    func regsiterClass<T: WDHandleProtocol>(handler: T) -> Void {
        self.handler = handler
    }
}

参数:handler参数是类型T,T是一个占位类型参数,必需遵循WDHandleProtocol协议。

这个函数的类型参数列紧随在两个类型参数需求的后面:

这样能够使regsiterClass函数能切换注册的处理器,还可注册多个处理器,这个看具体的业务场景,即便他们是不同的处理器,只需改变regsiterClass函数实现中对处理器的引用方式即可。

相关文章

  • Swift 泛型函数的一个特定的简单场景使用

    在Objective-C常用id<**Delegate>来应用一些定义的代理协议类,在业务逻辑处理的类中采用注册类...

  • iOS开发 - 「Swift 学习」Swift泛型

    Swift泛型 泛型函数 以上是交换两个任意相同类型值的泛型函数,T是一个占位命名类型,swift不会查找命名为T...

  • swift泛型整理

    swift泛型知识主要包括:泛型函数、泛型协议、泛型类型、泛型约束。 一、泛型函数。 如:一个交换两个变量值的函数...

  • iOS__在swift中实现debug隐藏打印日志

    在AppDelegate.swift文件中自定义一个泛型函数如下:

  • TypeScript 泛型

    泛型函数 使用 数组 类 泛型约束

  • 2021-12-01

    swift5基本语法-泛型函数和泛型类型 Swift中泛型可以将类型参数化,提高代码复用率,减少代码量。 一、泛型...

  • swift泛型函数

    本文转载自http://blog.csdn.net/youshaoduo/article/details/5486...

  • Kotlin泛型函数

    Kotlin提供了对泛型函数的支持。 一、泛型函数的使用 在声明函数时允许定义一个或多个泛型形参,泛型形参要用尖括...

  • Swift:泛型

    泛型 泛型函数泛型函数和非泛型函数的不同之处在于:泛型函数名(swapTwoValues(::))后面跟着 占位类...

  • Kotlin 泛型

    Kotlin 泛型 1. 泛型类 定义一个泛型类 使用 在继承中 使用 2. 泛型函数 使用 3. 泛型的擦除 无...

网友评论

    本文标题:Swift 泛型函数的一个特定的简单场景使用

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