Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何分解Swift类初始化以避免冗余代码?

如何分解Swift类初始化以避免冗余代码?
EN

Stack Overflow用户
提问于 2015-03-23 08:15:55
回答 1查看 284关注 0票数 1

我正在尝试做一个定制的UIPickerView。在我的自定义类中,我必须重写“init(编码器aDecoder: NSCoder)”初始化器。

同时,我想要一个没有任何参数的初始化器。根据错误消息,我的类变量初始化是强制性的,但如果在单独的函数中进行初始化,则不会检测到它们的初始化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyPickerView: UIPickerView{
   var maxInt:CInt;    

   func baseInit(){
      maxInt = 10;
   }

   override init() {
      maxInt = 10;
      super.init();
   }

   required init(coder aDecoder: NSCoder) {
      maxInt = 10;
      super.init(coder: aDecoder)
   }    
}

在那里,我确实有用于"maxInt“初始化的冗余代码。

如果我在初始化器中替换了maxInt的初始化,我将收到以下错误消息:

属性“self.maxInt”在super.init调用时未初始化

我该怎么办呢。最佳做法应该是什么?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-23 08:59:32

可以使var可选,也可以在声明时初始化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyPickerView: UIPickerView {
   var maxInt:CInt = 10 // or var maxInt:CInt?   
}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyPickerView: UIPickerView {
   var maxInt:CInt?

   func setup() {
     maxInt = 10
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29215147

复制
相关文章
swift底层探索 01 - 类初始化&类结构swift底层探索 01 - 类初始化&类结构
现在通过源码调试来验证一下之前的论点。源码编译方式Swift-5.3.1 源码编译.
用户8893176
2021/08/09
8820
swift底层探索 01 - 类初始化&类结构swift底层探索 01 - 类初始化&类结构
如何在Java和Swift中避免空引用异常?
您最近在代码中遇到过NullPointerException(空指针异常)吗? 如果没有,那你一定是一个很细心的程序员。在Java应用程序中最常见的异常类型之一就是NullPointerExcepti
程序你好
2018/08/01
2.7K0
如何在Java和Swift中避免空引用异常?
Vue报错避免冗余导航解决方法
具体报错信息如图 解决方案 在导航点击事件中加入catch捕获方法 click() { this.$router.replace(this.path).catch(err => err) }
用户10275458
2022/12/21
3170
Vue报错避免冗余导航解决方法
Vue报错避免冗余导航解决方法
具体报错信息如图 解决方案 在导航点击事件中加入catch捕获方法 click() { this.$router.replace(this.path).catch(err => err) }
peng_tianyu
2022/12/15
2210
Vue报错避免冗余导航解决方法
Swift基础 初始化
翻译自:https://docs.swift.org/swift-book/LanguageGuide/Initialization.html
郭顺发
2023/07/17
1770
Swift 反初始化
在类实例被释放的时候,反初始化器就会立即被调用。你可以是用 deinit 关键字来写反初始化器,就如同写初始化器要用 init 关键字一样。反初始化器只在类类型中有效。
赵哥窟
2020/07/28
3110
如何完美避免写出垃圾代码?
如果说到什么是好代码,小伙伴们肯定都能说出一堆规则,例如使用一致的格式和缩进、使用清晰的变量名和方法名、在必要时提供文档与注释、不要过度精简代码等等。
老九君
2020/03/11
1.1K0
3NF分解过程 3NF如何分解 (伪代码)
3NF 分解过程 (伪代码) let Fc be the canonical cover(最小函数依赖集) for F, i = 0 for each FD α → β Fc do if (none of Rj , j = 1, 2, . . . , i contains αβ) then i++ Ri = αβ if (none of Rj , j = 1, 2, . . . , i contains a candidate key for R) then i++ Ri = any c
平凡的学生族
2019/05/25
1.1K0
Swift基础 去初始化
翻译自:https://docs.swift.org/swift-book/LanguageGuide/Deinitialization.html
郭顺发
2023/07/17
1080
Swift入门:类
Swift有另一种方法来构建称为类的复杂数据类型。它们看起来类似于结构体,但有许多重要的区别,包括:
韦弦zhy
2020/03/19
7570
【已解决】Swift的泛型该如何初始化?
但是在泛型初始化的时候一直提示泛型无法进行初始化,觉得是泛型都不可以初始化,只有实体类型才可以。
君赏
2018/09/07
1.3K0
冗余代码检查工具Simian
微软web2.0开发示例Kobe,重蹈了Oxite的覆辙。Ayende连续发表了五篇高质量的Kobe探讨贴: Kobe – In the nuts & bolts and don’t really liking it Kobe – Data Access done wrong Kobe – When the documentation is the only delivery that matters Kobe – an example of exception handling done wrong Ko
张善友
2018/01/19
2.7K0
避免在Swift中使用单例
"我知道单例是不好的,但是......",这是开发人员在讨论代码时经常说的话。社区里似乎有一个共识,那就是单例是 "不好的",但同时苹果和第三方的Swift开发者都在应用内部和共享框架中不断使用它们。
韦弦zhy
2022/03/30
5110
Swift学习笔记(初始化过程)
MelonTeam
2018/01/04
1.3K0
Swift学习笔记(初始化过程)
技术译文 | MySQL 如何避免克隆失败后再次初始化
本文来源:https://www.percona.com/,爱可生开源社区翻译,封面由 DALL-E 3 生成。
爱可生开源社区
2023/10/25
2640
技术译文 | MySQL 如何避免克隆失败后再次初始化
如何避免写出烂的业务代码(1)
习惯了MVC模式,习惯了敏捷开发,习惯了了小步快跑,还适合谈论领域驱动开发吗。领域开发是否就是慢节奏的开发, 本文结合自己的开发经历,和大家聊聊这个话题。
方丈的寺院
2019/08/05
6770
手把手教你 javap 反编译分解代码,授人以鱼不如授人以渔
我之前写了一篇关于class文件重要性的,并且从宏观角度解释了下class文件的构成,文章直通车(不直通了,都在这个JVM专辑里面)
阿甘的码路
2020/09/26
5800
手把手教你 javap 反编译分解代码,授人以鱼不如授人以渔
swift代码段
Dictionary排序 let oldDic:[Int:String] = [ 0 : "张三", 3 : "李四", 1 : "王五", 2 : "找六", ] //根据key排序 let newArray = oldDic.sort({ $0.0 < $1.0 }) //放到新数组中 var keyArray = Array<Int>(); var valueArray = Array<String>(); for var i = 0;i < newArray.coun
码客说
2019/10/22
6500
Swift3.0 - 初始化和释放
1.系统要求存储属性必须初始化 2.可选值可以不用初始化,如果不初始化值,系统默认用nil初始化它 3.如果非可选类型存储属性不设置默认值,则必须在初始化方法中对其进行初始化 4.类必须自己写初始化方法,初始化没有默认值的非可选存储属性 5.结构体系统默认会添加初始化方法,当然自己也可以自定义 6.子类如果没有自己的初始化方法,系统默认使用父类的初始化方法,一旦有了自己的初始化方法,或者重写了父类的初始化方法,则父类的所有初始化不能被子类调用 7.你可以给子类添加和父类相同的初始化方法,但需要加上override 修饰 8.重写父类的convenience修饰的方便初始化方法,不需要加override 关键字
酷走天涯
2018/09/14
5580
Swift3.0 - 初始化和释放
.net程序源代码如何避免被反编译
许多开发人员仍然不知道可移植的可执行文件(PE)文件是可以被编译成可读的源代码。在学习如何防止或使反编译器难以对源代码进行反向编译之前,我们需要了解一些基本概念。 什么是可移植的可执行文件? 当源代码
程序你好
2018/07/20
2.2K0

相似问题

类设计-避免冗余代码

30

如何在多个类中避免代码冗余

40

Swift:避免超类冗余初始化由子类初始化的字段的方法吗?

113

避免类层次结构中的冗余代码

10

避免SQL代码冗余

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文