Xcode:避免使用 Interface Builder 是好主意还是坏主意? [关闭]

2023-12-21

我正在慢慢学习如何在 Xcode 和 Objective-C 中构建应用程序,并且我一直在阅读这篇博文 http://blog.teamtreehouse.com/why-i-dont-use-interface-builder关于在不使用 Interface Builder 的情况下编写 Cocoa Touch 应用程序的信息,以及这篇博文 http://berzniz.com/post/32597579083/8-reasons-why-real-men-do-use-interface-builder关于人们如何尽可能地使用 Interface Builder。

我发现自己更倾向于避免使用 Interface Builder,因为如果只是纯代码,我可以更快地发现问题,而且在这一点上,我比使用 Interface Builder 更熟悉编写代码。

所以我正在考虑完全避免使用 Interface Builder。但在此之前我想了解以下内容:

  • 是否有什么时候您绝对必须使用 Interface Builder?有什么是没有它就不可能实现的吗? (我知道事实恰恰相反。)

  • 我可以采用哪些实践来帮助我不错过 Tal Bereznitskey 概述的使用 Interface Builder 的优势。我特别想到他提出的关于更容易维护、更容易原型设计和更改内容的观点。

  • 完全忽略 Interface Builder 会让我在未来构建应用程序时处于不利地位。如果我只坚持编写代码,我希望将来开发的复杂应用程序会变得更加难以开发吗?

  • 我目前只是自己构建应用程序,但是当我开始与其他开发人员合作时,我会处于明显的劣势,因为我从未学习过如何使用 Interface Builder,或者我只知道如何编写代码就可以了吗?


我的发展经验以及IB的优缺点:

首先让 IB 消除复杂性,因为复杂性会阻碍学习只能用代码表达的核心概念。事实上,虽然 IB 隐藏了原本显而易见的连接(因此易于学习和调试),但总的来说,它在删除无关代码方面做得很好。

一旦您对 Objective-C 和 cocoa 感到更加熟悉,那么尽可能多地了解视图层次结构和 UI 元素的工作方式是有益的,而无需使用 IB。我认为在 IB 中没有什么是你不能做的,但是当以编程方式处理时,肯定有很多事情会更加灵活和强大。

从那时起,一旦您了解了底层功能,您就可以重新使用 IB 并让它节省您的时间和精力,否则您将使用设置 UIKit 元素的许多属性。

解决您对错过的担忧。我想说需要一些时间来学习 Storyboard(一种规划 UI 的集体方法)和 XIB/NIB 文件(其中单个 UI 文件与单个视图控制器关联)。故事板较新,很多人(包括我)都不太能完全理解它! NIB 和 XIB 更强大/不太明显,但仍然非常重要,因为有些东西在 Storyboard 中效果不太好。

在与其他人合作方面,IB 可能会让版本控制变得很痛苦,因为 IB 文件的 Plist/Backing 并不总是能很好地进行合并等...但是我想说,如果您是从学习的角度出发的话先写代码,再学习 IB 会更容易,反之亦然。在团队中工作最重要的规则是不要害怕提出问题。您的代码技能将帮助其他人,而其他人反过来也可以帮助您进行 IB。

希望有帮助。 Ray Wendlerlich 网站上有很棒的教程,请用 google 搜索他。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode:避免使用 Interface Builder 是好主意还是坏主意? [关闭] 的相关文章

  • 核心蓝牙在后台进行广告和扫描

    我一直在尝试设置一个应用程序 使设备既扫描外围设备又作为外围设备进行广告 目标是当两个设备通过蓝牙发现彼此靠近时在后台被唤醒 从 Apple 文档来看 您似乎应该能够在后台运行 BLE 启用蓝牙中心和蓝牙外设后台模式 并且当一台设备位于前台
  • CoreAnimation 性能分析 - CAReplicatorLayer 与 CAShapeLayer

    我正在制作一个依赖 CoreAnimation 的应用程序 它有一个 CAReplicatorLayer 和一个 CAShapeLayer 作为子层 当进行 12 次复制 然后对路径进行动画处理 在 touchMoved 上更改它 时 一旦
  • 移动 Safari 中的文件上传和 EXIF

    正如这些问题中所指出的 在某些情况下 iOS 上上传的照片的地理位置和其他 EXIF 元数据会被删除 在 safari 中 https apple stackexchange com questions 326789 gps exif fr
  • 检测您何时进入/退出 Xamarin.iOS 中的主线程

    Xamarin MonoTouch 有没有办法检测主线程中是否正在调用代码 我正在寻找类似于Java的东西EventQueue isEventDispatchThread 我发现 Swing 编程很方便assert时不时 或有时assert
  • iOS UITableViewCell 配件在左侧?

    对于我的应用程序 我想要一些可以同时具有复选标记和详细信息披露按钮的单元格 也就是说 我希望它们看起来与 iOS 设置中的 Wi Fi 网络选择一模一样 左侧的复选标记 中间的内容 右侧的详细信息披露按钮 有没有正确的方法来做到这一点 或者
  • Xcode 不会在故事板中显示我的文本字段占位符文本

    当我在属性检查器中分配文本字段的占位符值时 它不会显示在故事板中 但是 当我运行应用程序的模拟器时 它就在那里 我缺少什么设置吗 我只想能够在编辑器中看到占位符文本 下面是 xcode 和模拟器之一的屏幕截图 我遇到了同样的问题 幸运的是我
  • cordova-plugin-whitelist 适用于 Android,但不适用于 iOS (Phonegap Build)

    我正在开发一个用 Cordova 封装并使用 Phonegap Build 构建的 JavaScript 应用程序 我们包括cordova plugin whitelist来自我们构建中的 npm 并添加了
  • Swift 中的弹出视图

    我有一个弹出视图 没有选项卡栏 它弹出到带有选项卡栏的视图控制器 在带有选项卡栏的视图控制器中 我设置了一个单击按钮 以便弹出视图控制器 IBAction func PopUpClicked sender UIButton gt Void
  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁
  • 尝试从独立的 Apple Watch 应用发出网络请求

    当应用程序是独立应用程序时 Apple Watch 是否无法进行网络通话 即使手表已连接到 iPhone 我正在使用新的独立应用程序目标 它没有附带可以发出 WatchConnectivity 请求的配对 iOS 应用程序 我十有八九收到
  • 如何从 NSString 中删除十六进制字符

    我面临一个与字符串中的某些十六进制值相关的问题 我需要从字符串中删除十六进制字符 The problem is when i print object it prints as BLANK line And in debug mode it
  • 从 RemoteIO 保存音频的示例?

    我进行了搜索 但没有找到任何从 RemoteIO 音频单元保存音频的好示例或教程 我的设置 使用 MusicPlayer API 我有几个 AUSamplers gt MixerUnit gt RemoteIO 音频播放效果很好 我想添加将
  • 更改 UITextField 辅助功能描述

    有没有办法将 UITextField 的辅助功能标签设置为 文本字段 之外的其他内容 因此 我不想将其称为 文本字段 而是将其命名为 代码验证字段 我的建议是不要试图在内置语音输出上智取系统 对于盲人用户来说 文本字段正在编辑 相当于 该项
  • 打印附加结构(swift 4)

    我有三个 textifled 用于将数据附加到结构中 如何打印我附加的内容 现在我收到一条错误消息 import UIKit class ViewController UIViewController IBOutlet var c UITe
  • UIImage:如何获取网站选项卡图标

    我正在开发一个 RSS 阅读器 我需要获取每个提要的图标 例如 如果我的提要是 google com 我想获取 G 图标并将其放入 UIImage 或其他内容中 关于如何实现这一目标有什么想法吗 最简单的方法是使用 Google NSStr
  • 如何在 EKRecurrenceRule 中设置一周中某一天的数组?

    我想在用户选择的特定日期每周添加事件 可以是一个或多个 也可以是一整天 我将用户选择的日期值存储在模型类变量中 但是 当我添加事件并选择日期时 假设今天是星期一 我选择星期二和星期三并保存 然后我查看周一和周三添加的 iPhone 日历 我
  • Swift 中 UIImages 的淡入淡出动画

    我有一组图像 我希望它们在登录屏幕的背景中淡出 我无法在 swift 中找到任何可以做到这一点的东西 有什么办法我可以做到吗 这是我当前的代码 override func viewDidLoad super viewDidLoad star
  • 应用未能及时恢复

    我在一个非常具体的场景中遇到 未能及时恢复 崩溃 我认为与看门狗相关 仅在从后台恢复时 并且仅在进入后台后在很短的时间内执行此操作 a最多几秒钟 这似乎是相关的崩溃日志 Incident Identifier E30F2238 5B15 4
  • iOS 发送 iMessage 尽可能简单

    我希望能够以编程方式发送 iMessage 除了调用一个将文本发送到带有消息的号码的函数之外 无需执行任何其他操作 这两个消息都是文本框 我真的很感激一些示例代码 因为我在网上搜索过 但我发现没有任何帮助 这不适用于商业应用程序 仅适用于我
  • 当设置 setVisibleXRangeMaximum 时,iOS-Charts X 轴值无限重复

    我正在尝试绘制一个图表 其中 x 轴是TimeIntervalY 轴是power consumption 由于每天都会有数据 因此将有太多数据无法显示 因此 我想一次显示 5 个值 我通过设置实现了这一点self chart setVisi

随机推荐

  • 使用 Docker-Compose 时,使用 JPDA 进行远程调试不会通过 eclipse 连接到 Tomcat

    我对 Docker 很陌生 所以这可能是我做错的一些简单的事情 有了所有的解决方案 当使用 Docker run 启动 Tomcat 容器时 我已经能够使用 eclipse 进行远程调试 docker run it rm e JPDA AD
  • Grails 项目 - Eclipse 中的常见 Java 项目依赖项

    All 我们有标准的 java 项目 其中包含通用数据模型 通用 util 类等 我似乎不明白如何使我的 Grails 项目 在 Eclipse 中 依赖于工作区中的其他标准 非 Grails java 项目 当我在 Java 构建路径 中
  • 如果您不解决或拒绝承诺会怎样?

    我有一个场景 我要返回一个承诺 Promise 基本上是由 ajax 请求触发的 拒绝承诺时 它会显示一个错误对话框 表明服务器存在错误 我想要做的是 当响应代码为 401 时 我既不想解析承诺 也不想拒绝它 因为它已经显示错误对话框 我只
  • 如何使用javascript创建上传进度条

    我使用 php 将文件上传到服务器 在客户端使用 HTML 和 javascript 我想创建一个确定的进度条 显示文件上传的进度 使用javascript 看待 新鲜的 许多图书馆之一 http github com drogus jqu
  • 按代号完全引用工作表

    当我使用 CodeName 属性引用 Excel 工作表时 如何完全限定它们 包括工作簿引用 我想防止出现打开两个不同工作簿且两张工作表具有相同 CodeName 的情况 我用ThisWorkbook因为我想引用运行代码的工作簿 我想象这样
  • Goroutine 是否与其通道一起被垃圾收集?

    想象一下下面的代码 func waitForOneOfTwoProcesses c make chan bool go func time Sleep 1 time Second c lt true go func time Sleep 2
  • 始终在 ASP.NET MVC 控制器中使用异步

    我最近继承了一个ASP NET MVC项目 在该项目中 开发人员正在使用async 到处 我正在尝试评估这是否是一个好主意 具体来说 我现在正在审查控制器代码 在控制器中 开发人员编写了如下内容 public async Task
  • 如何使用 C# 解码 JSON 字符串?

    我正在寻找示例代码 lib 来使用 C 解码 JSON 字符串 要编码我可以这样做 var data new Dictionary
  • 解析 PHP 中的类、函数和参数

    我想创建一个函数 它接收一个参数 该参数保存 PHP 文件的路径 然后解析给定的文件并返回如下所示的内容 class NameOfTheClass function Method1 arg1 arg2 arg2 private functi
  • sin 和 cos 是如何在硬件上实现的?

    我一直在研究如何计算正弦和余弦 我发现了一些 标准 方法 包括查找表 CORDIC 算法和泰勒级数 我还发现大多数现代处理器都有计算三角函数的汇编指令 我想知道的是这些命令是如何工作的 所以 我的问题是 当前一代处理器使用什么特定算法来计算
  • 有没有办法使用内置的苹果 API 在 mkmapview 中获取方向?

    我知道谷歌地图被认为是最好的地图 但我不想下载一堆额外的库之类的 我更喜欢做一些快速简单的事情来获得从 A 点到 B 点的快速路线并完成它 有没有办法使用内置函数 库来做到这一点 有人能指出我正确的方向吗 EDIT 我并不是想逐个轮流指示或
  • 如何从 Java 字符串中删除空字符 (\0)

    我知道 C 中的这段代码试图删除nul人物 0 来自字符串 string Join mText Split new string 0 StringSplitOptions None 有什么方法可以在 Java 中有效地做到这一点吗 你可以写
  • 对于大 n,java.lang.Math.pow(x, n) 的准确/精确度如何?

    我想计算一下 1 0 p n其中 p 是 0 到 1 之间的双精度值 通常非常接近 0 n 是一个正整数 可能约为数百或数千 可能更大 我还不确定 如果可能的话我想只使用Java的内置java lang Math pow 1 0 p n 为
  • PhantomjsDriver 无法在 Windows 和 Linux 上运行

    我有一个使用 Selenium Webdriver 从站点获取一些信息的应用程序 它在 FirefoxDriver 和 ChromeDriver 上工作得很好 但是当我尝试切换到 PhantomJSDriver 时 我遇到了一些困难 在 W
  • 猫鼬承诺与蓝鸟和打字稿

    我正在使用 nodejs typescript 和 mongodb 数据库开发一个应用程序 为了查询数据库 我正在使用mongoose http mongoosejs com index html 我刚刚读过 mongoose 文档中的一篇
  • 如何在 Swift 中子类化自定义 UIViewController?

    我想创建一个可重用的视图控制器UsersViewControllerBase UsersViewControllerBase延伸UIViewController 并实现两个代表 UITableViewDelegate UITableView
  • 如何知道 spring 生成的 bean 中的 bug 行?

    我有一个使用 Spring 和 jpa 由 hibernate 构建的网站 我遇到了错误 但我不知道如何识别错误出现的行 我无法在我的IDE上调试它 因为它是实时版本 在本地一切运行良好 我有日志说 哦 rg springframework
  • Bash:导出未将变量正确传递给父级

    子脚本中导出的变量在父脚本中未定义 a sh bin bash This is the parent script a sh export var 5e 9 b sh var export result res res is defined
  • 与 SQL 的时区协调

    问题1 3 我有多个MySQL要连接的数据库并希望确保查询之间的时间一致性 例如 其中一台服务器当前位于CDT时区 gt select CURRENT TIMESTAMP system time zone global time zone
  • Xcode:避免使用 Interface Builder 是好主意还是坏主意? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在慢慢学习如何在 Xcode 和 Objective C 中构建应用程序 并且我一直在阅读这篇博文 http blog teamtreeho