iPhone开发-全校公选课考试题.doc_第1页
iPhone开发-全校公选课考试题.doc_第2页
iPhone开发-全校公选课考试题.doc_第3页
iPhone开发-全校公选课考试题.doc_第4页
iPhone开发-全校公选课考试题.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

iPhone开发试题学 院: 工 学 院 专 业: 电气工程及其自动化 班 级: 2011级普本电气 姓 名: 李 学 号: 110*8 2013年12月2日(一)简述objective-C的优缺点?(不少于100字)答:Objective-C是非常“实际”的语言。它使用一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。ObjC写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。Objective-C的最初版本并不支持垃圾回收。在当时这是争论的焦点之一,很多人考虑到Smalltalk回收时长的“死亡时间”,令整个系统失去功用。Objective-C为避免此问题才不拥有这个功能。虽然某些第三方版本已加入这个能(尤是GNUstep), Apple在其Mac OS X 10.3中仍未引入这个功能。另一个问题是ObjC不包括命名空间机制(namespace mechanism)。取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。在2004年,在Cocoa程环境中,所有Mac OS X类别和函式均有“NS”作为前缀,例如NSObject或NSButton来清楚分别它们属于Mac OS X核心;使用“NS”是由于这些类别的名称在NeXTSTEP开发时定下。虽然Objective-C是C的母集,但它也不视C的基本型别为第一级的对象。和C+不同,Objective-C不支援运算子多载(它不支持ad-hoc多型)。亦与C+不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容(二)简述面向对象程序设计的特点有哪些?(不少于200字)答:1.信息隐藏和封装特性:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。3.组合特性组合用于表示类的“整体/部分”关系。例如主机、显示器、键盘、鼠标组合成一台计算机。4.动态特性(1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。(2)多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。(三)什么事MVC,MVC是怎么工作的?(不少于300字)答: MVC架构是Model-View-Controller的缩写,中文翻译为模式-视图-控制器。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。 视图视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services. 如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。 模型模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 控制器控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。 (四)阐述objective-C的内存管理?(不少于300字)答:iPhone系统中的Objective-C的内存管理机制是比较灵活的,即可以拿来像C/C+一样用,也可以加个AutoreleasePool让它升级为半自动化的内存管理语言。一,引用计数是实例对象的内存回收唯一参考引用计数(retainCount)是Objective- C管理对象引用的唯一依据。调用实例的release方法后,此属性减一,减到为零时对象的dealloc方法被自动调用,进行内存回收操作,也就是说我们永不该手动调用对象的dealloc方法。主要操作接口:1,alloc, allocWithZone,new(带初始化) 为对象分配内存,retainCount为“1”,并返回此实例2,retain retainCount 加“1”3,release retainCount 减“1”,减到“0”时调用此对象的dealloc方法4,copy,mutableCopy 复制一个实例,retainCount数为“1”,返回此实例。所得到的对象是与其它上下文无关的,独立的对象(干净对象)。5,autorelease 在当前上下文的AutoreleasePool栈顶的autoreleasePool实例添加此对象,由于它的引入使Objective-C(非GC管理环境)由全手动内存管理上升到半自动化。数组(Array)是一个比较特别的例子,当你往数组里面添加一个对象时。数组里面存储的并不是这个对象的拷贝,而只是一个指向该对象的指针。数组在保存这个指针的同时会向指针所指的对象发送一个retain消息,相应的,对象的持有计数会增加。将对象从数组中移除的时候,同样会向对象发送release消息,对象的持有计数会减小。当我们释放这个数组时,会向保存在这个数组中的所有对象发送release消息。看下面的两个例子:1、没有释放内存的版本array = NSMutableArray alloc init;for ( i = 0; i 10; i+) newNumber = NSNumber allocinitWithInt:(i * 3);array addObject:newNumber;上面的代码在创建newNumber对象时,向对象的发送了retain消息,对象的持有计数变为1。当向array中添加这个对象的引用时,又向对象发送了一次retain消息,这样对象的持有计数就变为2了,在使用完array时,我们会习惯性的释放掉array,但这样并不会释放array所持有的对象,而只是使所有对象的持有计数变为1,这些对象依然会占用着内存。(五)什么自动释放池,它是如何工作的?(不少于200字)答:在main函数里面定义的Autoreleasepool,用来在一个runLoop事件结束后释放存在于内存的autorelease变量。当有输入信号(input source,比如键盘鼠标的操作、),NSPort和NSConnection对象时,runloop提供了一个程序接口,即等待输入。但是我们从来都不需要去创建或者去管理一个runloop。在每个进程中都相应的有runloop,不管时当前的主进程还是新建的进程。只要知道这些事情都在RunLoop中运行就可以了,这些事件结束,runLoop也就结束,结束以后,这次RunLoop中创建的所有的autorelease变量就会释放。也就是说在一次RunLoop事件中这些autorelease变量是存在与缓冲池中的,这次RunLoop事件结束了,这些autorelease的变量就会释放,不存在于内存中了。(六)#import与#include的区别是什么?答:#import比起#include的好处就是不会引起交叉编译在 Objective-C中,#import 被当成 #include 指令的改良版本来使用。除此之外,#import确定一个文件只能被导入一次,这使你在递归包含中不会出现问题class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#importclass就是告诉编译器有这么一个类,至于类的定义是啥不知道class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import“”的意思是自己创建的文件,用这个首先会在当前的目录中寻找,如果找不到就到其他的位置寻找,“”和是相对的一个是自己创建的文件一个是系统的文件(七)简述assign、retain和copy的区别?答:assign对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等)此标记说明设置器直接进行赋值,这也是默认值。在使用垃圾收集的应用程序中,如果你要一个属性使用assign,且这个类符合NSCopying协议,你就要明确指出这个标记,而不是简单地使用默认值,否则的话,你将得到一个编译警告。这再次向编译器说明你确实需要赋值,即使它是可拷贝的。retain对其他NSObject和其子类对参数进行release旧值,再retain新值指定retain会在赋值时唤醒传入值的retain消息。此属性只能用于Objective-C对象类型,而不能用于Core Foundation对象。(原因很明显,retain会增加对象的引用计数,而基本数据类型或者Core Foundation对象都没有引用计数)。copy对NSString 它指出,在赋值时使用传入值的一份拷贝。拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协议的对象类型有效。更深入的讨论,请参考“复制”部分。(八)IOS开发中有哪些常用的组件?答:7个iOS应用界面组件的xcode源码,包括Grid,Slide Gallery,Simple Gallery,Simple List,Header Bar,Tab Bar,Page Bar (九)static关键词的作用是什么?答:声明为static的变量实质上就是全局变量。声明为static的方法有以下几条限制:它们仅能调用其他的static 方法。它们只能访问static数据。它们不能以任何方式引用this 或super如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次。(十)简述苹果公司的发展历程。(不少于1000字)答:苹果公司(由苹果电脑公司更名而来)由斯蒂夫乔布斯、斯蒂夫盖瑞沃兹尼亚克和Ronald Gerald Wayne在 1976年4月1日创立。1975年春天,Apple由Wozon设计,并被Byte的电脑商店购买了50台当时售价为666.66美元的Apple。1976年,由斯蒂夫乔布斯(Steve Jobs)和斯蒂夫沃兹尼亚克(Steve Wozniak,简称沃兹)和Ronald Gerald Wayne创立。在当年开发并销售Apple I电脑 1977年苹果正式注册成为公司,同时,苹果也获得了第一笔投资Mike Markkula的92000美元.苹果股份有限公司(Apple Inc.,简称苹果公司,NASDAQ: AAPL,LSE:ACP),原称苹果电脑(Apple Computer),2007年1月9日于旧金山的Macworld Expo上宣布改名。总部位于美国加利福尼亚的库比提诺,核心业务是电子科技产品。1977年,发售最早的个人电脑Apple II。 1984年,推出革命性的Macintosh电脑。 2001年,推出iPod数位音乐随身听。 2003年,推出最早的64位元个人电脑Apple PowerMac G5。 2005年6月6日,斯蒂夫乔布斯宣布下一年度将采用英特尔处理器。 2007年1月9日,苹果电脑公司正式推出iPhone手机,并正式更名为苹果公司。 2008年1月15日,苹果公司在MacWorld2008展会上发布MacBook Air笔记本电脑,它是目前市面上最薄的笔记本电脑。 2008年12月30日,世界权威的品牌价值研究机构世界品牌价值实验室举办的“2008世界品牌价值实验室年度大奖”评选活动中,苹果公司凭借良好的品牌印象和品牌活力,荣登“中国最具竞争力品牌榜单”大奖,赢得广大消费者普遍赞誉。 2010年5月26日,超越微软,成为世界上市值最大的高新科技公司。 2011年3月2日,苹果公司推出第二代ip

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论