iOS - 可选 + IUO vs 闭包 vs let 声明 UIObjects 哪个是 swift 中最好的属性初始化?

问题描述 投票:0回答:0

你好:) 我是一名最近喜欢iOS开发的学生。

我在做C或C++的时候没有那么担心,但是当我通过Swift在UIViewController中声明多个对象时,我很担心如何以最有效的方式初始化对象。

在UIViewController中初始化一个UIObject类型的子视图或者初始化存储属性的时候,我觉得主要有3种初始化方式

1. 使用闭包初始化属性

在这种情况下,属性是在VC init中初始化的,所以如果你想使用VC中定义的非静态类型函数(ex UIbutton's addTarget),你需要添加lazy关键字。

因为它使用了闭包,所以可以在声明的同时进行初始化,可以在VC初始化之后加上lazy再初始化。但是,如果在必要时不附加 lazy,可能会出现意想不到的结果,因此您必须谨慎声明 lazy。

您可以使用快捷键将代码隐藏在闭包中,但您仍然必须按快捷键才能立即看到类中的一些属性。

2. 使用 func 初始化属性

在这种情况下,由于每个属性都无法初始化,除非它是惰性类型或静态类型函数,我们暂时跳过它。

3. 使用 let declare 初始化属性

如果用let声明,VC初始化加载到内存后,property的属性被添加到对应的空间。由于这是视图加载到内存后的点,因此没有必要向按钮添加 lazy 关键字。在我看来,这种情况有点像使用 C 或 C++。您可以立即检查属性,而无需按热键。

4. 使用属性作为可选 + IUO 类型

您可以查看定义为可选或 IUO 类型的属性,例如在故事板中添加对象或在 UICollectionViewController 中添加 UICollectionView 对象。

如果要在viewDidLoad 进行初始化,则按钮不需要lazy 关键字。但是,不能使用 let 关键字,因为它在声明一次后就被初始化了。此外,如果您在未初始化的情况下使用它,应用程序可能会崩溃。尽管如此,我认为您不必担心 lazy 关键字是件好事。

至此,我介绍了UIViewController中初始化UIObjects的三种主要方式

本来想的是用“section 2”闭包会很方便,但是在UIViewController类页面,第一部分是property属性初始化,中间->UIDraw相关函数,属性布局设置在结束。在代码的顶部和底部,放置了属性初始化和布局相关的代码。

另一方面,在“section 3, 4”的情况下,可以在页面末尾放置属性添加和布局安排等代码。

与否

似乎有一种方法可以将UIViewController的view创建一个单独的文件作为UIView类型的类放在UIViewController中,但是方法好像太多样化了

开发者很好奇他们最喜欢哪种方式

ios swift initialization instance-variables
© www.soinside.com 2019 - 2024. All rights reserved.