Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 我应该手动还是使用InterfaceBuilder创建对象?_Cocoa_Xcode_Interface Builder - Fatal编程技术网

Cocoa 我应该手动还是使用InterfaceBuilder创建对象?

Cocoa 我应该手动还是使用InterfaceBuilder创建对象?,cocoa,xcode,interface-builder,Cocoa,Xcode,Interface Builder,我对Cocoa/Xcode比较陌生,不确定我是否以最“正确”的方式构建了我的应用程序。我有许多对象在应用程序运行时处于活动状态。我应该手动还是使用Interface Builder创建这些对象 我所指的对象类型: “downloader”,负责将文件下载到磁盘 用户界面更新程序,负责更新用户界面以显示下载文件的结果 我应该在IB中创建这些对象并用代码建立它们之间的连接吗?我通常在IB中尽可能多地构建对象,然后在遇到IB的限制时切换到代码。听起来你应该能够创建在interface builde

我对Cocoa/Xcode比较陌生,不确定我是否以最“正确”的方式构建了我的应用程序。我有许多对象在应用程序运行时处于活动状态。我应该手动还是使用Interface Builder创建这些对象

我所指的对象类型:

  • “downloader”,负责将文件下载到磁盘
  • 用户界面更新程序,负责更新用户界面以显示下载文件的结果

我应该在IB中创建这些对象并用代码建立它们之间的连接吗?

我通常在IB中尽可能多地构建对象,然后在遇到IB的限制时切换到代码。听起来你应该能够创建在interface builder中描述的UI。

这确实是个人偏好的问题

在我看来,IB非常擅长布局视图,所以我倾向于只将IB用于我的视图和视图控制器,并且我在视图控制器的viewDidLoad或init方法的代码中创建其他所有内容

在您的示例中,将“downloader”对象直接连接到接口似乎违反了MVC,因此我不想让downloader进入我的xib

“接口更新程序”将与接口紧密连接,因此它可以位于nib中,尽管除非我有充分的理由不这样做,否则我可能会将该代码放入我的view controller类中


如果您是在代码中创建内容,请注意viewDidLoad/viewDidUnload可能会被调用多次,因为操作系统会在视图不可见时加载和卸载视图以节省内存。所以只需要把瞬变物体放在那里。。。视图控制器生命周期中必须存在的东西应该在init/dealoc方法中创建。我喜欢在代码中创建大多数对象的部分原因是,您对内存的控制级别更高。

+1,用于提及违反MVC。老实说,我完全忘记了模型,这是我将来应该注意的。