gpt4 book ai didi

ios - 围绕 iOS 中的对象展开思考

转载 作者:可可西里 更新时间:2023-11-01 02:08:41 25 4
gpt4 key购买 nike

我无法理解对象的概念。据我所知,它们是一个类的实例。在学习 swift 时,它们很容易理解。只需创建一个类并创建它的一个实例,然后您就可以修改它的属性并调用它的方法:

class ExampleClass {
let ExampleProperty = "rabbit"
}

let exampleInstance = ExampleClass()

但是在使用 iOS 时我看不到它是如何转换的,因为我还没有看到任何对象被显式创建:

var example = Wss()

所以我的问题是:

  1. 按钮、标签和 slider 之类的东西是对象吗?

-如果是这样,它们背后的“代码”在哪里?为什么按钮、标签等在通过 socket 和操作连接到 View Controller 之前就显示出来了?每个 slider 和按钮中是否都嵌入了隐藏的“var thisButton = ThisViewController()”?

  1. 如果我的假设是错误的,有人可以向我解释对象的工作原理吗?

最佳答案

"Is there a hidden "var thisButton = ThisViewController()" embedded into each of those sliders and buttons?"

不,这正是界面构建器擅长的地方。 Xcode 的大部分现代 Interface Builder 来自 NeXTSTEP。当您拖出一个新的 UI 组件(如 NSButton)并将其放在 Storyboard上时,Xcode 会为您实例化一个新的 NSButton 对象。当您保存文件时,Xcode 序列化您 Storyboard的所有对象到一个 .nib 文件中。在发明它的时候,它是相当具有革命性的,因为 Objective C 的活力,这一切都成为可能。它使 GUI 编程变得更加简单和动态。 Storyboard中的每个对象都知道它的类。例如,当您实例化一个新的 NSButton 时,您可以打开检查器并亲自查看它的类是 NSButton。当您将自定义 View 添加到您的应用程序时,它们会以相同的方式跟踪它们的类。每当加载 nib 文件时,这些 View 都会从它们的类中实例化。您可能已经注意到,您从不重写 View 的初始化程序。相反,您可以覆盖 awakeFromNib 等方法。这是因为有很多幕后工作正在为您完成,从对象首次实例化到时间。在此期间,IBOutlets 和 IBActions 将为您绑定(bind)。

竞争对手试图制作类似的界面构建应用程序,但他们最终求助于在幕后进行代码生成。在这些系统中,当您保存接口(interface)文件时,程序会生成一个源文件,其中包含指示在加载接口(interface)时如何重新实例化这些对象的代码。然而,事实证明,它是一项比仅序列化对象要复杂得多的任务,因此这些系统容易出错,并且调试起来要困难得多(因为您将尝试调试机器生成的源文件)。

关于ios - 围绕 iOS 中的对象展开思考,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41784811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com