美文网首页
swift构造方法使用

swift构造方法使用

作者: 清隐道人 | 来源:发表于2017-12-06 10:23 被阅读0次

最近自定义一个textview,实例化的时候报错,自定义实例化怎么改都是错,因为使用super.init(),这个方法在父类UITextView中是不存在的,应该调用系统原有的super.init(frame: frame , textContainer: textContainer),可是这个textcontainer无从传来,需要再实例化一个设置,然后研究了下swift的实例化,用便利构造方法实现,便不需要实例这个参数,现在总结如下:
swift的构造方法与oc不同,多了一个便利构造方法,相同的是自定义构造方法和系统原有的构造方法,都要super调用父类原有的构造方法。
1.便利的构造方法


image.png

上图是自定义textview的便利的构造方法示例,需要实现self.init()或self.init(frame:frame),如果是self.init()无参数,则实例化出来的是没有大小的,需要调用完实例化方法后另设frame,一般会使用self.init(frame:frame)

使用self.init()外部调用
let textV = FDSEmoticonTextView(placeHolde: "输入新鲜事",frame:CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height*0.5))
        textV.delegate = self
    textV.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height*0.5)
使用self.init(frame:frame)外部调用
    let textV = FDSEmoticonTextView(placeHolde: "输入新鲜事",frame:CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height*0.5))
        textV.delegate = self

总结:便利构造函数可以自定义参数,实现中需要用self调用构造方法带有参数frame或者无参数(),并需要复写系统已有的override构造方法,在self调用后进行设置或属性赋值,使用场景:构造时做特别设置,多用于自定义UI控件,可以写多个,定制多个样式的实例
2.系统原有的构造方法


image.png

总结:使用系统自带的构造方法,参数不可变,需要用super调用系统已有的构造方法,在外部调用的时候可以只传frame,或者什么也不传直接FDSEmoticonTextView(),使用场景:构造时不需要特别设置,多在自定义cell、view中使用,只有一种样式。
3.自定义构造方法,以UIView为例,参数是一个闭包,在调用super前给属性赋值


image.png
总结:自定义构造方法可以自定义参数,需要用super调用系统已有的构造方法,外部调用有什么参数传什么参数。在super调用前给属性赋值。使用:需要做特别设置,多在NSobject(模型)或自定义view中使用,可以写多个,定制多种样式的实例。

相关文章

  • swift构造方法使用

    最近自定义一个textview,实例化的时候报错,自定义实例化怎么改都是错,因为使用super.init(),这个...

  • Swift 引发的一场知识暴动

    一、构造方法 在Swift中,主要有三种构造方法:系统构造方法、普通构造方法与便利构造方法。构造方法一般都是以 i...

  • Swift子类重写父类构造函数

    swift中子类重写父类构造方法: 如果父类没有指定构造方法(带参数的构造方法), 子类重写父类构造方法就不需要调...

  • swift构造方法

    1.构造方法的初始化 构造一个对象之后,要求对象中的所有非lazy的存储属性必须有初始值, 如果没有缺省值,则应该...

  • Swift构造方法

    构造方法作用:对实例对象的内容进行初始化Swift要求类或者结构体中的存储属性(非lazy属性)在对象构造完毕后要...

  • Swift面向对象

    创建一个类 类的四种属性 类的构造 swift类构造过程 指定构造器 便利构造器 KVC构造器 实例方法和类方法 ...

  • Swift 里容易被忽略的类型转换工具

    Swift 类型转换 整数类型之间的转换 实例代码如下: 相比numericCast与使用整数类型的构造方法来转换...

  • iOS开发之Swift篇(12)—— 构造和析构

    目录 版本 构造过程 析构过程 版本 Xcode 11.3.1Swift 5.1.3 构造过程 构造过程是使用类、...

  • Swift学习:构造器(中)

    Swift之构造器(上)Swift之构造器(中)Swift之构造器(下) 本篇继续对Swift中的构造器进行介绍,...

  • Quartz2D - 1

    开源框架CorePlot oc oc使用方法: Swift swift 使用context的方法:

网友评论

      本文标题:swift构造方法使用

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