iPhone开发-全校公选课考试题

上传人:mg****2 文档编号:122127319 上传时间:2020-03-01 格式:DOC 页数:14 大小:55.50KB
返回 下载 相关 举报
iPhone开发-全校公选课考试题_第1页
第1页 / 共14页
iPhone开发-全校公选课考试题_第2页
第2页 / 共14页
iPhone开发-全校公选课考试题_第3页
第3页 / 共14页
iPhone开发-全校公选课考试题_第4页
第4页 / 共14页
iPhone开发-全校公选课考试题_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《iPhone开发-全校公选课考试题》由会员分享,可在线阅读,更多相关《iPhone开发-全校公选课考试题(14页珍藏版)》请在金锄头文库上搜索。

1、.iPhone开发试题学 院: 专 业: 班 级: 姓 名: 学 号: 2014年5月5日.(说明:1不要修改此试卷的任何格式(否则不算成绩),格式包括字体,行间距等。2正文用小四号宋体,1倍行距,打印时可删除此说明,做完后打印,一周之内交到理工试验大楼702嵌入式重点实验室)(一)简述objective-C的优缺点?(不少于100字)答:objective-C也是C的面向对象扩展,主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。个人对此语言没有应用经验,感觉苹果和next电脑是使用这种语言开发的,应用范围

2、较小。 Objective-C的最初版本并不支持垃圾回收。另一个问题是ObjC不包括命名空间机制(namespacemechanism)。取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。 和C+相比:Objective-C不支持多重继承,(同Java和Smalltalk),而C+语言支持多重继承。Objective-C是动态定型(dynamicalytyped)所以它的类库比C+要容易操作。(二)简述面向对象程序设计的特点有哪些?(不少于200字)答:面向对象程序设计有三大特点:I封装 封装机制将数据和代码捆绑到一起,避免了外界的干扰和不确定性。它同样允许创建对象。简单的说,一个

3、对象就是一个封装了数据和操作这些数据的代码的逻辑实体。 在一个对象内部,某些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。 II继承 继承是可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。例如,知更鸟属于飞鸟类,也属于鸟类。就像图5中描绘的那样,这种分类的原则是,每一个子类都具有父类的公共特性。III多态 多态是OOP的另一个重要概念。多态的意思是事物具有不同形式的能力。举个例子,对于不同的实例,某个操作可能会有不同的行为。这个行为依赖于所要操作数据的

4、类型。比如说加法操作,如果操作的数据是数,它对两个数求和。如果操作的数据是字符串,则它将连接两个字符串。 (三)什么事MVC,MVC是怎么工作的?(不少于300字)答:MVC全名是Model View Controller,是模型(model)视图(view)控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑和数据显式分离的方法组织代码,将业务逻辑聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。MVC(model view contr

5、oller)模型-视图-控制器。 模型封装了对数据和对数据的操作,是实际进行数据处理和计算的地方。视图是应用和用户之间的接口,它负责将应用显现给用户和显示模型的状态。控制器负责视图和模型之间的交互。 MVC本身就是一个非常复杂的系统,所以采用MVC实现Web应用时,最好选一个现成的MVC框架,在此之下进行开发,从而取得事半功倍的效果。现在有很多可供使用的MVC框架,由于Struts有完整的文档并且相对来讲比较简单,所以用它开发MVC系统还是比较方便地。它是怎样工作的呢,先通过JS视图层来接收信息,存入ACTIONFROM给予到,通过IXX(接口)到方法,逻辑层DAO,调用ENTITY 类型。(

6、四)阐述objective-C的内存管理?(不少于300字)答:iPhone系统中的Objective-C的内存管理机制是比较灵活的,即可以拿来像C/C+一样用,也可以加个AutoreleasePool让它升级为半自动化的内存管理语言。当然,也不能拿JAVA虚拟机中的全自动化GC来比!一,引用计数是实例对象的内存回收唯一参考引用计数(retainCount)是Objective-C管理对象引用的唯一依据。调用实例的release方法后,此属性减一,减到为零时对象的dealloc方法被自动调用,进行内存回收操作,也就是说我们永不该手动调用对象的dealloc方法。它的内存管理老简单老简单了,下面

7、就是它主要操作接口:1,alloc, allocWithZone,new(带初始化) 为对象分配内存,retainCount为“1”,并返回此实例2,release retainCount 减“1”,减到“0”时调用此对象的dealloc方法3,retain retainCount 加“1”4,copy,mutableCopy 复制一个实例,retainCount数为“1”,返回此实例。所得到的对象是与其它上下文无关的,独立的对象(干净对象)。5,autorelease 在当前上下文的AutoreleasePool栈顶的autoreleasePool实例添加此对象,由于它的引入使Objecti

8、ve-C(非GC管理环境)由全手动内存管理上升到半自动化。二,Objective-C内存管理准则我们可以把上面的接口按对retainCount的操作性质归为两类,类是加一操作:1,3,4类是减一操作:2,5(延时释放)内存管理准则如下:1,A与类的调用次数保持一制2,为了很好的保障准则一,以实例对象为单位,谁A了就谁,没有第二者参与三,对象的拥有者面向对象领域里有个引用的概念,区别于继承,引用常被用来当做偶合性更小的设计。继承是强依赖。我们要降偶软件的设计,就要尽量减少对它的使用。但没有任何偶合的模块或功能是没有用的,那我们只能多用引用了吧。一个实例拥有另一个实例的时候,我们称它为引用了另一个

9、实例。另外一个比较容易忽略而又比较经典的问题是实例变量的循环引用,Objective-C为此区分了,其实也相当的简单:1,强引用,上面讲的就是强引用,存在retainCount加一。2,弱引用,但凡是assign声明并直接用指针赋值实现的被称之为弱引用,不存在retainCount加一的情况。四,AutoreleasePool使Objective-C成为内存管理半自动化语言。(五)什么自动释放池,它是如何工作的?(不少于200字)答:当您向一个对象发送一个autorelease消息时,java觉得Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放当您向一

10、个对象发送一个autorelease消息时,java觉得Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域结束的位臵时,自动释放池就会被释放,池中的所有对象也就被释放。 当使用Foundation框架中的类来做更多程序处理工作时,需要一个更有弹性的内存管理机制,也就是要使用内存释放池(Autorelease pool)。内存释放池提供了一个对象容器,每次对象发送autorelease消息时,对象的引用计数并不真正变化,而是向内存释放池中添加一条记录,记下对象的这种要求。直到当内存释放池发送dr

11、ain或release消息时,即当池被销毁前会通知池中的所有对象,全部发送release消息才会真正将引用计数减少。 简单说内存释放池可以自动管理对象释放问题,这些语句必须要放在下面语句之间,直到池被释放,一个对象要想纳入内存释放池对象,必须要发送autorelease。(六)#import与#include的区别是什么?答:除此之外,#import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题 class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import class就是告诉编译器有这么一个类,至于类的定义是啥不知道 class一般用于头文

12、件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import import 跟 #import又什么区别?“”的意思是自己创建的文件,用这个首先会在当前的目录中寻找,如果找不到就到其他的位置寻找,“”和是相对的一个是自己创建的文件一个是系统的文件(七)简述assign、retain和copy的区别?答: copy: 用于希望保持一份传入值的拷贝,而不是值自身的情况,即把原来的对象完整的赋值到另外一地方,重新加载一内存区,一个地方变了不影响另一个地方的对象。 assign: 简单的直接赋值,相当于说两个对象指向同个内存区,一个地方的变了,其他的也跟着改变。 retain:释放旧

13、的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1。Copy 其实是建立了一个相同的对象,而 retain 不是:比如一个 NSString 对象,地址为 01111,内容为”ABC”Copy 到另外一个 NSString 之 后,地址为 02222,内容相同,新的对象 retain 为 1, 旧有对象没有变化retain 到另外一个 NSString 之 后,地址相同(建立一个指针,指针拷贝),内容当然相 同,这个对象的 retain 值+1assign 地址还是0x1111,内容也还是“ABC”。也就是说,retain 是指针拷贝,copy 是内容拷贝。 (八)IOS开发中有哪

14、些常用的组件?答:下面是几个Iphone开发ISO常用的开源组件:1、AFNetworkingAFNetworking是一个开源的网络库,适用于iOS以及Mac OS X. 它构建于在NSURLConnection, NSOperation以及其他熟悉的Foundation技术之上; 它拥有良好的架构,丰富的api,以及模块化构建方式,使用起来非常方便。2、EGORefreshTableHeaderViewEGORefreshTableHeaderView是一个实现向下拉刷新列表的组件(现在非常流行,IOS、Android上很多应用都在用这个东东,比如:网易新闻)3、MBProgressHUD

15、MBProgressHUD是一个进度显示的组件4、EGOImageLoadingEGOImageLoading是一个实现异步加载图片的组件5、GCDiscreetNotificationViewGCDiscreetNotificationView是一个非模态化的 iOS 通知视图,可用来显示应用中的一些信息提示,而不会干挠用户的交互操作6、ALToastViewALToastView同GCDiscreetNotificationView一样也可以实现信息提示,也不会干扰用户的交互操作,与Android中Toast效果相似。(九)static关键词的作用是什么?答:static可以修饰类的属性、代码块和方法。用static修饰的东西归类模板对象所有,可以直接用类名调用。(你用实例来调用不会出错,编译器会帮你编译成用类名来调用。)关于代码块, 如果加了static则只在类模板加载的时候执行一次。不加的话类模板加载的时候是不执行的, 只在创建实例的时候才执行。(十)简述苹果公司的发展历程。(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号