精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究
在Swift3里,如果派生类写init构造函数,要调用基类的构造函数,如果没有调用就会出上面的错误。
基类的构造函数可能有不同形式,不同形式的参数可能不一样,有的也可能不带参数。调用基类的构造函数要满足形式要求,这里我的基类是NSHashTable,NSHashTable<AnyObject>,就要按它的形式来调用,如果调用约定不一样,就会出标题的错误。按下面形式调用就不出错。
super.init(options: NSPointerFunctions.Options.weakMemory,capacity:100)
对swift3语法形式不熟悉,还真解决不了
Swift3不象C++,对成员的初始化要求严格,如果有成员在构造函数里没有初始化,就会报这样的错误。我经常是写一个全部成员初始化的init函数,再在其它带参数的init函数里调用这个init函数,虽然有点浪费,但不用在每个init里找有没有缺少成员初始化。