ios面试题.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ios面试题

1. 回答person的retainCount值,并解释为什么?Person * per = [[Person alloc] init]; 此时person 的retainCount的值是1 self.person = per;?在self.person 时,如果是assign,person的 retainCount的值不变,仍为1 若是:retain person的retainCount的值加1,变为2?若是:copy person的retainCount值不变,仍为12、 这段代码有什么问题吗: @implementation Person?- (void)setAge:(int)newAge {self.age = newAge; }@end会死循环,会重复调用自己!self.age 改为_age即可;并且书写不规范:setter方法中的newAge应该为age3、这段代码有什么问题,如何修改?for (int i = 0; i someLargeNumber; i++) { NSString *string = @”Abc”;?string = [string lowercaseString];?string = [string stringByAppendingString:@xyz]; NSLog(@“%@”, string);?}?会出现内存泄露?修改之后:?for(int i = 0; i1000;i++){NSAutoreleasePool * pool1 = [[NSAutoreleasePool alloc] init]; NSString *string = @Abc;?string = [string lowercaseString];?string = [string stringByAppendingString:@xyz]; NSLog(@%@,string);//释放池[pool1 drain]; }延伸:堆栈的区别:(1)管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生 memory leak。 (2)申请大小:能从栈获得的空间较小,堆是向高地址扩展的数据结构,是不连续的内存区域。堆的大小受限于计算机系统中 有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。 (3)碎片问题:对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。 对于栈来讲,则不会存在这个问题,因为栈是先进后出的队列,他们是如此的一一对应,以至于永远都不可能有一个内存块 从栈中间弹出 (4)分配方式:堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成 的,比如局部变量的分配。动态分配由 alloca函数进行分配,但是栈的动态分配和堆是不同的,他的动态分配是由编译器 进行释放,无需我们手工实现。 (5)分配效率:栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈 都有专门的指令执行,这就决定了栈的效率比较高。堆则是C/C++函数库提供的,它的机制是很复杂的。 4、写一个便利构造器+(id)Person {Person *person=[Person alloc]init];?return [person autorelease]; 备注:ARC时不用 autorelease}5、截取字符串”20 | ”中,”|”字符前面和后面的数据,分别输出它们。???? NSString * str = @20 | ;?NSArray *array = [str componentsSeparatedByString:@|]; //这是分别输出的截取后的字符串for (int i = 0; i[array count]; ++i) { NSLog(@%d=%@,i,[array objectAtIndex:i]);}6、用obj-c写一个冒泡排序 -(void)mySort:(NSMutableArray *)mutArray {id tmpObj = nil;?unsigned long flag = mutArray.count-1;//flag :最大脚标 while (flag 0) {int k = flag;?flag = 0;?for (int j = 0 ; j k ; j++) {int order = NSOrderedAscending;// 或 NSOrderedDescending?if ([[mutArray[j] description] compare:[mutArray[j+1] description]]

文档评论(0)

haocen + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档