Swift-Initialization 学习简记

本文深入探讨Swift中的构造器概念,包括存储属性初始赋值、自定义构造过程、值类型的构造器代理、类的继承和构造过程等核心内容,并介绍了两段式构造过程以及构造器的继承和重写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、存储属性初始赋值:构造器中赋值、默认属性值(推荐)
2、自定义构造过程 构造参数:内部外部参数名、不带外部名的构造器参数、可选属性类型、构造过程中常量属性修改、默认构造器、结构体的逐一成员构造器
3、值类型的构造器代理
4、类的继承和构造过程:指定构造器和便利构造器(convenience)
类的构造器代理规则:1、指定构造器必须调用其直接父类的指定构造器。2、便利构造器必须调用同一类中定义的其他构造器。3、便利构造器必须最终导致一个指定构造器被调用。
3原则简易记法:指定构造器必须总是向上代理,便利构造器必须总是横向代理

5、两段式构造过程
2阶段:第一个阶段,每个存储型属性被引入它们的类指定一个初始值。当每个存储型属性的初始值被确定后,第二阶段开始,它给每个类一次机会,在新实例准备使用之前进一步定制它们的存储型属性。

4种有效的安全检查:1、指定构造器必须保证它所在类引入的所用属性都必须完成初始化,之后才能将其他构造任务向上代理给父类中的构造器;2、指定构造器必须先向上代理父类构造器,然后再为集成的属性设置新值。如果没有这样,指定构造器中设置的新值将被父类中的构造器所覆盖;3、便利构造器必须先代理调用同一类中的其他构造器,然后再为任意属性赋新值。如果没这么做,便利构造器赋的新值将被同一类中其他指定构造器所覆盖;4.构造器在第一阶段构造完成之前,不能调用任何实例方法,不能读取任何实例属性的值,不能引用self作为一个值。类实例在第一阶段结束以前并不是完全有效的。只有第一阶段完成后,该实例才会成为有效实例,才能访问属性和调用方法。

6、构造器的继承和重写
跟 Objective-C 中的子类不同,Swift 中的子类默认情况下不会继承父类的构造器。Swift 的这种机制可以防止一个父类的简单构造器被一个更精细的子类继承,并被错误地用来创建子类的实例

6.1 构造器的自动继承
规则1:如果子类没有定义任何指定构造器,它将自动继承所有父类的指定构造器。
规则2:如果子类提供了所有父类指定构造器的实现——无论是通过规则 1 继承过来的,还是提供了自定义实现——它将自动继承所有父类的便利构造器。
注意
对于规则 2,子类可以将父类的指定构造器实现为便利构造器。
7、可失败构造器init?
8、构造失败的传递
9、重写可失败构造器
10、可失败构造器init!
11、必要构造器 required
12、通过闭包或函数设置属性的默认值。

### 下载 `unidal-initialization` 的 Maven 依赖 为了在 Maven 项目中引入 `unidal-initialization` 的 JAR 包,可以通过以下方式实现: #### 添加依赖到项目的 `pom.xml` 首先,在项目的 `pom.xml` 文件中添加如下依赖项。假设该库已经存在于某个公开的 Maven 远程仓库中。 ```xml <dependency> <groupId>com.alibaba.unidal</groupId> <artifactId>unidal-initialization</artifactId> <version>具体版本号</version> </dependency> ``` 注意:上述 `<groupId>` 和 `<artifactId>` 是基于常见的命名约定设置的,实际值需根据官方文档或远程仓库中的定义调整[^1]。 #### 配置 Maven 数据仓库 如果目标 JAR 不在默认的中央仓库中,则需要手动指定其所在的远程仓库地址。可以在 `pom.xml` 中增加以下配置来指向特定的远程仓库: ```xml <repositories> <repository> <id>alibaba-public-repo</id> <url>https://maven.aliyun.com/repository/public</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>false</enabled></snapshots> </repository> </repositories> ``` 此操作确保当本地未找到对应资源时,Maven 可自动尝试从阿里云或其他自定义公共仓库获取所需的 JAR 包[^2]。 #### 更新 IDEA 设置以支持 Maven 构建 对于使用 IntelliJ IDEA 开发工具的情况,建议完成以下几步操作以便更好地集成 Maven 功能: - 安装并正确配置 JDK 版本 (至少为 1.8)[^1]; - 确认已安装最新版 Maven 并将其路径加入系统的 PATH 环境变量; - 修改全局 settings.xml 文件位置至用户目录下的 .m2/settings.xml 或者通过 IDE 自带界面重新加载外部配置文件; 最后一步非常重要——即每次编辑完 pom 后都应右键点击刷新按钮让改动生效[^3]. #### 手动解决无法在线拉取的问题 假如网络条件不允许直接联网抓取或者找不到确切匹配条目的话,可以考虑采用离线模式处理: 1. 访问官方网站或者其他可信站点下载对应的二进制压缩包; 2. 使用命令行形式导入本地存储区: ```bash mvn install:install-file -Dfile=/path/to/unidal-initialization.jar \ -DgroupId=com.alibaba.unidal \ -DartifactId=unidal-initialization \ -Dversion=具体版本号 \ -Dpackaging=jar ``` 这样做的好处在于能够强制将任意来源的目标产物纳入当前工程可用范围之内而无需担心互联网连通性影响. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值