欢迎来到天天文库
浏览记录
ID:40557752
大小:39.50 KB
页数:4页
时间:2019-08-04
《iOS开发之关于Objective-C十个面试题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、苹果的iOS系统越来越火了,苹果这个金矿平台也吸引了大量的iOS开发者参与其中,这也促使越来越多的公司向iOS应用开发方向靠拢,因此市场上对iOS开发的人才需求自然也非常巨大。如果你准备去面试一个iOS开发岗位,那么本文也许可以帮助你提前准备一些iOS面试题,这些面试题都是Objective-C基础面试题,与扣丁学堂一起来看看吧。1、#import和#include的区别,@class代表什么?@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import而#
2、import比起#include的好处就是不会引起重复包含2、谈谈Object-C的内存管理方式及过程?1.当你使用new,alloc和copy方法创建一个对象时,该对象的保留计数器值为1.当你不再使用该对象时,你要负责向该对象发送一条release或autorelease消息.这样,该对象将在使用寿命结束时被销毁.2.当你通过任何其他方法获得一个对象时,则假设该对象的保留计数器值为1,而且已经被设置为自动释放,你不需要执行任何操作来确保该对象被清理.如果你打算在一段时间内拥有该对象,则需要保留它并
3、确保在操作完成时释放它.3.如果你保留了某个对象,你需要(最终)释放或自动释放该对象.必须保持retain方法和release方法的使用次数相等.3、Object-C有私有方法吗?私有变量呢?objective-c–类里面的方法只有两种,静态方法和实例方法.这似乎就不是完整的面向对象了,按照OO的原则就是一个对象只暴露有用的东西.如果没有了私有方法的话,对于一些小范围的代码重用就不那么顺手了.在类里面声名一个私有方法@interfaceController:NSObject{NSString*som
4、ething;}+(void)thisIsAStaticMethod;–(void)thisIsAnInstanceMethod;@end@interfaceController(private)-(void)thisIsAPrivateMethod;@end@private可以用来修饰私有变量在Objective〤中,所有实例变量默认都是私有的,所有实例方法默认都是公有的4、Object-C有多继承吗?没有的话用什么代替?cocoa中所有的类都是NSObject的子类多继承在这里是用protoco
5、l委托代理来实现的你不用去考虑繁琐的多继承,虚基类的概念.ood的多态特性在obj-c中通过委托来实现.5、内存管理Autorelease、retain、copy、assign的set方法和含义?1,你初始化(alloc/init)的对象,你需要释放(release)它。例如:NSMutableArrayaArray=[[NSArrayalloc]init];后,需要[aArrayrelease];2,你retain或copy的,你需要释放它。例如:[aArrayretain]后,需要[aArray
6、release];3,被传递(assign)的对象,你需要斟酌的retain和release。例如:obj2=[[obj1someMethod]autorelease];对象2接收对象1的一个自动释放的值,或传递一个基本数据类型(NSInteger,NSString)时:你或希望将对象2进行retain,以防止它在被使用之前就被自动释放掉。但是在retain后,一定要在适当的时候进行释放。关于索引计数(ReferenceCounting)的问题retain值=索引计数(ReferenceCounti
7、ng)NSArray对象会retain(retain值加一)任何数组中的对象。当NSArray被卸载(dealloc)的时候,所有数组中的对象会被执行一次释放(retain值减一)。不仅仅是NSArray,任何收集类(CollectionClasses)都执行类似操作。例如NSDictionary,甚至UINavigationController。Alloc/init建立的对象,索引计数为1。无需将其再次retain。[NSArrayarray]和[NSDatedate]等“方法”建立一个索引计数为
8、1的对象,但是也是一个自动释放对象。所以是本地临时对象,那么无所谓了。如果是打算在全Class中使用的变量(iVar),则必须retain它。缺省的类方法返回值都被执行了“自动释放”方法。(*如上中的NSArray)在类中的卸载方法“dealloc”中,release所有未被平衡的NS对象。(*所有未被autorelease,而retain值为1的)6、浅拷贝和深拷贝区别是什么简单的来说就是,在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增
此文档下载收益归作者所有