IOS经典面试题.pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IOS经典面试题

IOS面试题 1.在一个对象的方法里面:=“object”;和 name=”object” 有什么 不同吗? 答: =”object”:会调用对象的setName()方法; name=“object”:会直接把object赋值给当前对象的name属性。 2.请简述=nil 的机制,以及与[namerelease]的区别? =nil; //使用nil参数调用setName:方法 [namerelease]生成的访问器将自动释放以前的name对象 3.请简要说明viewDidLoad和viewDidUnload何时调用 答 viewDidLoad在vie 从nib文件初始化时调用,loadVie 在controller 的vie 为nil 时调用。此方法在编程实现vie 时调用,vie 控制器默认会 注册memorywarningnotification,当vie controller 的任何vie 没有用的 时候,viewDidUnload会被调用,在这里实现将retain的vie release,如果 是 retain 的IBOutlet vie 属性则不要在这里 release,IBOutlet 会负责 release 。 4.打印结果 main() { inta[5]={1,2,3,4,5}; int*ptr=(int*)(a+1); printf(“%d,%d”,*(a+1),*(ptr-1)); } 答: *(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5 a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数 组的大小(本例是5个int) int*ptr=(int*)(a+1); 则ptr 实际 是(a[5]),也就是a+5 原因如下: a是数组指针,其类型为 int(*)[5];而指针加1要根据指针类型加上一定的 值,不同类型的指针+1之后增加的大小不同。 a是长度为5的int数组指针,所以要加 5*sizeof(int) 所以ptr 实际是a[5] 但是prt与(a+1)类型是不一样的(这点很重要) 所以prt-1只会减去sizeof(int*) a,a的地址是一样的,但意思不一样 a是数组首地址,也就是a[0]的地址,a是对象(数组)首地址, a+1是数组下一元素的地址,即a[1],a+1是下一个对象的地址,即a[5]. 5.简述内存分区情况 提示:分为代码区、数据区、堆区、栈区 (1)代码区:存放函数二进制代码 (2)数据区:系统运行时申请内存并初始化,系统退出时由系统释放。存 放全局变量、静态变量、常量 (3)堆区:通过malloc等函数或ne 等操作符动态申请得到,需程序员手 动申请和释放 (4)栈区:函数模块内申请,函数结束时由系统自动释放。存放局部变量、 函数参数 6.自动释放池是什么,如何工作 当您向一个对象发送一个autorelease 消息时,Cocoa就会将该对象的 一个引用放入到必威体育精装版的自动释放池。它仍然是个正当的对象,因此自动释 放池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域 结束的位置时,自动释放池就会被释放,池中的所有对象也就被释放。 1)objc-c 是 通过一种”referringcounting”(引用计数)的方式来管理内存的, 对象在开始分配内存(alloc)的时候引用计数为一,以后每当碰到有copy,retain 的时候引用计数都会加一, 每当碰到release和autorelease的时候引用计数 就会减一,如果此对象的计数变为了0, 就会被系统销毁. 2)NSAutoreleasePool 就是用来做引用计数的管理工作的,这个东西一般不 用你管的. 3 )autorelease 和release 没什么区别,只是引用计数减一的时机不同而 已,autorelease会在对象的使用真正结束的时候才做引用计数减一. 7.frame和bounds有什么不同? 答案: frame指的是:该vie 在父vie 坐标系统中的位置和大小。 (参照点 是父亲的坐标系统) //frame:框架、结构 bounds指的是:该vie 在本身坐标系统中 的位置和大小。(参照点 是本身坐标系统) //bounds:界限 8. 队列和栈有什么区别: 答:队列和栈是两种不同的数据容器。从”数据结构”的角度看,它们都是线 性结构,即数据元素之间的关系相同。 队列是一种先进先出的数据结构,它在两端进行操作,一端进行入队 列操作,一端进行出

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档