![]() |
1
6
如果您查看目标信息(双击目标以显示该信息),“属性”选项卡,您将看到主Nib文件的名称。“Nib”和“Xib”这两个词在这些方面是可以互换的;Xib只是Nib的一个较新的替代品。 它将是'主窗口'从模板新鲜。如果你打开主窗口.XB,你会看到有一个对象叫[Project Nosi] AppDeaveTo,如果你显示了检查员并在“i”标签下检查,你会看到在顶部被命名的类的类型。如果您检查connections选项卡(向右箭头),您将看到文件所有者(即UIApplication本身)附加了其“delegate”属性。 您还将看到它有一个名为“viewController”的插座。它附加到XB中的另一个对象名为[项目名称]视图控制器中。检查上面的类型,您将看到它是Xcode添加到项目中的视图控制器的类型。查看它的属性(inspector中的第一个选项卡,带有滑块图形),您还将看到一个单独的nib文件被指定为包含其主要细节。 为了论证起见,假设我称我的项目为“NibTest”,并且没有做任何更改。 在运行时,设备加载Info.plist。在那里可以看到委托的类型是nibetasppdelegate。所以它将实例化类nibetasppdelegate的一个实例,并将UIApplication的delegate属性设置为它。 然后,它将从MainWindow.nib中看到NibTestAppDelegate有一个名为viewController的成员,其类型为NibTestViewController。因此它将创建一个该实例,并在刚刚创建的nibetestappdelegate实例上设置viewController属性。 在这样做时,它将打开另一个XIB并继续执行相同的步骤。 Objective-C有一个完全反射的运行时,因此您可以在运行时按其类名实例化对象。例如,这是ObjuleC和C++之间的区别之一。 Xcode没有生成任何隐藏代码或依赖于任何隐藏的命名约定。整个过程在运行时由操作系统来解决。 编辑:例如,代替您的示例:
你实际上可以:
只要MyViewController存在于程序中或更广泛的运行时,它们就可以操作相同。
您也可以传递任何其他想要的字符串对象
|
![]() |
Mark George · 如何在swift ui中为文本提供内部填充 1 年前 |
![]() |
Safa Ads · CDN:无法下载中继URL:https://cdn.jsdelivr.net/cocoa/Specs/2/e/c/RxSwift/3.0.0-rc.1/RxSwift.podspec.json响应:SSL连接错误 1 年前 |
![]() |
Frakcool · 满足条件时,SwiftUI动画背景颜色更改 2 年前 |