iOS开发:IB VS 纯代码

2024-08-30 04:08
文章标签 代码 开发 vs ios ib

本文主要是介绍iOS开发:IB VS 纯代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一般刚开始学习开发iOS的开发者不会考虑是使用IB编写UI好还是使用纯代码编写好,因为刚开始学习的时候可能都觉得只要先学会开发iOS就可以了,再者IB也是苹果官方提供的编程方式,不会有什么问题。但是当开发完全可以掌握使用Ib设计iOS的时候就开始有了疑虑,为什么iOS开发会有Ib开发和纯代码开发两种方法呢,那二者的区别又是什么呢,哪一个更具有优势?

首先,所见即所得的开发模式已经是现代编程的趋势了,如VS和MyEclipse等等,因为这会大大提升程序的开发效率,缩减开发周期。如果使用纯代码如C语言编写,那就要了亲命了,在Windows编写一个窗口需要近百行代码,而在VS下编写一个窗口仅需要几分钟的时间拖动控件即可完成。

但是,凡事都是两面的,开发效率高的一般执行效率都低!想一想Java、C++和C语言之间的关系应该就明白了。

一、IB设计UI

使用IB设计UI,在创建一个ViewController时选中同时创建XIB即可,这样这个XIB文件会自动和这个类关联,当然你也可以分开创建ViewController和XIB,然后自己设置关联。接着我相信大家都知道怎么做了,只需要从Library中选择需要的控件如按钮、文本、输入框等拖放到视图上即可,然后在属性中设置相应的外观。

但是XIB到底是什么呢?XIB其实就是一个XML文件,XML for Interface Builder,当然你可以直接打开这个XML文件对里边的属性进行更改,但对于初学者建议不要这么做。

当程序加载某一个界面的时候,调用init或者initWithNib方法会主动加载对应的XIB文件,然后解析这个XML文件并将解析后的执行代码放到内存中执行。

但是大家如果有文件读写的编程经历的话应该都清楚,文件读写的速度是很慢的,也就是说Ib方式编写代码会拖慢程序执行的效率。似乎像VS和MyEclipse这样的工具使用这种模式开发好像也没发现什么问题,但是iPhone不是PC啊,没有PC那么强悍的硬件。

那么什么情况下使用IB开发呢?

1、软件体积小

2、交互的数据量小

3、团队开发时开发人数少,任务周期短

4、开发者是新手,对iOS开发理解和开发经验还不是很充足,编写代码容易出错或速度太慢

5、对iOS的内存管理了解的不透彻,建议使用IB+ARC实现微笑

6、个人开发

二、纯代码编写UI

这种编写方式一般来说速度慢,执行效率高,对开发者的要求也比较高。但是建议,如果程序数据很大,对执行效率有要求的尽量都使用纯代码编写。

三、IB和纯代码联合编写

1、数据量大的视图使用纯代码编写

2、用户经常查看的视图使用纯代码编写

3、不常使用或隐藏很深,用户不易或根本很少会看的东西使用Ib编写,如软件的帮助和关于、版权协议等。

4、如果你的软件对执行效率没有要求或者软件太小根本不会涉及到效率的问题,那建议使用IB编写

这篇关于iOS开发:IB VS 纯代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119746

相关文章

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

使用Java实现Navicat密码的加密与解密的代码解析

《使用Java实现Navicat密码的加密与解密的代码解析》:本文主要介绍使用Java实现Navicat密码的加密与解密,通过本文,我们了解了如何利用Java语言实现对Navicat保存的数据库密... 目录一、背景介绍二、环境准备三、代码解析四、核心代码展示五、总结在日常开发过程中,我们有时需要处理各种软

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

Java 压缩包解压实现代码

《Java压缩包解压实现代码》Java标准库(JavaSE)提供了对ZIP格式的原生支持,通过java.util.zip包中的类来实现压缩和解压功能,本文将重点介绍如何使用Java来解压ZIP或RA... 目录一、解压压缩包1.zip解压代码实现:2.rar解压代码实现:3.调用解压方法:二、注意事项三、总