【开发技术】storyboard和nib的差别
在使用Storyboard管理的iOS应用中,它的组成部分为AppDelegate和ViewController这两个类以及MainStoryboard.storyboard文件组成。
Storyboard编辑器和Interface Builder很像(我觉得,他们其实就是一样的)。Storyboard管理不是一个视图控制器,而是所有的视图控制器。
建立在storyboard上的应用程序,在它启动时,使用 键UIMainStoryboardFile去指定必须被加载的storyboard的名字。
可以看到该类继承自UIResponder,这是使用storybaord的要求,而以前使用使用nib时,应用委托类是直接继承自NSObject的。 当这个设置提供后,UIApplication将加载MainStoryboard.storyboard文件,同时自动实例化来自storyboard的第一个视图控制器,将该视图控制器的视图们放入一个新的UIWindow对象中。这个过程不需编码。
(注:在nib管理的应用程序中,这个过程是需要编码的,加载视图控制器的所属视图和实例化UIWindow对象。)
iOS应用程序在系统上启动的过程是这样: 第一步,用户tap界面上的应用图标 第二步,应用调用main()函数 第三步,main()函数调用UIApplicationMain()函数。(注:在nib管理的应用程序中,最后一个参数是nil;而在storyboard管理的应用程序中,最后一个参数是AppDelegate的类名称。因为nib文件包含了appDelegate的名称,而storyboard中没有,所以必须在UIApplicationMain()中指定appDelegate的名称。) main.m文件是应用启动的初始文件。打开main.m文件,如下所示:
- #import <UIKit/UIKit.h>
- #import "AppDelegate.h"
- int main(int argc, char *argv[])
- {
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil,
- NSStringFromClass([AppDelegate class]));
- }
- }
#import <UIKit/UIKit.h>
#import "AppDelegate.h" int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class]));
}
}
在AppDelegate中,如下所示:
- #import <UIKit/UIKit.h>
- @interface AppDelegate : UIResponder <UIApplicationDelegate>
- @property ( strong, nonatomic ) UIWindow * window;
- @end
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate>
@property ( strong, nonatomic ) UIWindow * window;
@end
而且该类只有一个UIWindow的属性,和nib管理的应用程序不同的是,这里没有IBOutlet前缀。这表示这个属性不是一个输出口。
【开发技术】storyboard和nib的差别的更多相关文章
- 持久化API(JPA)系列(三)实体Bean的开发技术-建立与数据库的连接
在EJB 2.x中.EJB有3种类型的Bean.各自是会话Bean(Session Bean).消息驱动Bean(Message-Driven Bean)和实体Bean(Entity Bean). 随 ...
- Storyboard、Nib文件和代码来实现UI的利与弊
很清楚,这就是iOS里面两种可视化UI的方法.加上全部用代码来实现UI,总共有三种方法可以来实现. 我们先说一下全用代码来做,这个方法属于比较极端的程序员所推崇的,优点和缺点同样明显. 优点是可以实现 ...
- 大规模web服务开发技术
大规模web服务开发技术 总评 这本书是日本一个叫hatena的大型网站的CTO写的,通过hatena网站从小到大的演进来反应一个web系统从小到大过程中的各种系统和技术架构变迁,比较接 ...
- 微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击
微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击 摘要: 小程序和公众号最大的区别有如下四点:1.小程序没有粉丝,开发者在后台能看到的只能是累计用户访问数以及实时统计 ...
- GIS历史概述与WebGis应用开发技术浅解
声明:本篇在李晓晖的<杂谈WebGIS>,补充更多的资料说明.基于地图二次开发一直断断续续在做,这里算是补充一下基本功把.其实对于前端,WebGis开发都是api,抄demo,改.GIS深 ...
- .NET Web开发技术简单整理
在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...
- Web前端开发大系概览 (前端开发技术栈)
前言 互联网建立50多年了,网站开发技术日新月异,但web前端始终离不开浏览器,最终还是HTML+JavaScript+CSS这3个核心,围绕这3个核心而开发出来大量技术框架/解决方案. 我从2000 ...
- VC++/MFC(VC6)开发技术精品学习资料下载汇总
工欲善其事,必先利其器,VC开发MFC Windows程序,Visual C++或Visual Studio是必须的,恩,这里都给你总结好了,拿去吧:VC/MFC开发必备Visual C++.Visu ...
- Web开发技术发展历史
Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...
随机推荐
- 前端安全之XSS攻击及防御
xss攻击是什么 ? XSS攻击类似于SQL注入攻击,攻击之前,我们先找到一个存在XSS漏洞的网站,XSS漏洞分为两种,一种是DOM Based XSS漏洞,另一种是Stored XSS漏洞.理论上, ...
- K:Union-Find(并查集)算法
相关介绍: 并查集的相关算法,是我见过的,最为之有趣的算法之一.并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.其相关的实现代码较为简短,实现思想也 ...
- HTTP首部解析
HTTP首部解析 转载请注明出处:HTTP首部解析 文章目录 1.与HTTP协议相关的Web服务器 2.HTTP首部 与HTTP协议相关的Web服务器 在说明HTTP首部相关知识之前,有必要先了解一下 ...
- linux系统编程:IO读写过程的原子性操作实验
所谓原子性操作指的是:内核保证某系统调用中的所有步骤(操作)作为独立操作而一次性加以执行,其间不会被其他进程或线程所中断. 举个通俗点的例子:你和女朋友OOXX的时候,突然来了个电话,势必会打断你们高 ...
- Hive thrift服务(将Hive作为一个服务器,其他机器可以作为客户端进行访问)
步骤一:启动为前台:bin/hiveserver2 步骤二:启动为后台:nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log ...
- 利用appium-1.5.3.dmg安装Appium. doctors时,提示 Could not detect Mac OS X Version from sw_vers output: '10.12'
发生这种错误的原因是因为:appium不支持mac 10.12版本. 解决方法: https://stackoverflow.com/questions/40129794/how-to-fix-err ...
- IntelliJ IDEA运行慢解决方法
今天在用IntelliJ IDEA运行项目时速度奇慢,上网找了一些解决方法,记录一下以供参考. 修改配置文件 IntelliJ IDEA\bin下idea.exe.vmoptions -server ...
- BaseServer的介绍
服务器类型 5种类型:BaseServer,TCPServer,UnixStreamServer,UDPServer,UnixDatagramServer.注意:BaseServer不直接对外服务. ...
- Jerry的通过CDS view + Smart Template 开发Fiori应用的blog合集
S4/HANA里有一个新的UI框架叫做Smart template, 配合ABAP后台的CDS view技术,能够让developer以Metadata driven的方式来开发Fiori应用, 这种 ...
- 盒模型 bug 与触发 bfc
一.margin合并 css经典bug 两个块级元素 分别设置 margin-bottom 和 margin-top 并不能达到预期效果 <style> .up{ width: 200 ...