IOS面试题详解

这段时间参加个几个面试,发现现在大多数的面试都有笔试环节了,给出个十几道题,然后让你来解答,下面我整理了一下一些笔试中常见的题,并且附上答案,(答案都是我在网上整理的,内容可能有欠缺,欢迎高手指正).

 1.  ObjC中,与alloc语义相反的方法是dealloc还是release?与retain语义相反的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?


2.  在一个对象的方法里面:
self.name = “object”;

name =”object”
有什么不同?
 
3.  这段代码有什么问题:
@implementation Person
- (void)setAge:(int)newAge {
self.age = newAge;
}
@end
 
4.  什么是retain count?
 
5.  以下每行代码执行后,person对象的retain count分别是多少
Person *person = [[Person alloc] init];
[person retain];
[person release];
[person release];
 
6.  为什么很多内置类如UITableViewController的delegate属性都是assign而不是retain的?
7.  定义属性时,什么情况使用copy,assign,和retain

8.  autorelease的对象是在什么时候被release的?

9.  这段代码有什么问题,如何修改
for (int i = 0; i < someLargeNumber; i++)
{
NSString *string = @”Abc”;
string = [string lowercaseString];
string = [string stringByAppendingString:@"xyz"];
NSLog(@“%@”, string);
}
10. autorelease和垃圾回收机制(gc)有什么关系?IPhone OS有没有垃圾回收(gc)?
11. Objective C中的protocal是什么?
12. Objective C中的selector 是什么?
13. Objective C中的category是什么?

14. 什么是Notification?什么时候用delegate,什么时候用Notification?

15. 什么是KVC和KVO?Notification和KVO有什么不同?KVO在ObjC中是怎么实现的?

16. ViewController 的 loadView, viewDidLoad, viewDidUnload 分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作?

17. ViewController 的 didReceiveMemoryWarning 是在什么时候被调用的?UIViewController类中didReceiveMemoryWarning默认的操作是什么?
 
18. UITableViewController 中,创建UITableViewCell时,initWithSytle:resuseIdentifier 中,reuseIdentifier有什么用?简述UITableViewCell的复用原理.

19. UIView 和CALayer 有什么区别?

20. 以 UIView 类 animateWithDuration:animations: 为例,简述UIView动画原理

21.谈谈你对ARC的认识和理解。

22.#import 跟#include 又什么区别,@class呢; #import<> 跟 #import”"又什么区别?

23.id 声明的对象有什么特性?

24.委托是什么?委托的property声明用什么属性?为什么?

25.浅拷贝和深拷贝区别是什么?

26.

for(int index = 0; index < 20; index ++){
    NSString *tempStr = @”tempStr”;
    NSLog(tempStr);
    NSNumber *tempNumber = [NSNumber numberWithInt:2];
    NSLog(tempNumber);
}
 
  

这段代码有什么问题.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环内好还是循环外好?为什么?

for(int index = 0; index < 20; index ++){
    NSString *tempStr = @”tempStr”;
    NSLog(tempStr);
    NSNumber *tempNumber = [NSNumber numberWithInt:2];
    NSLog(tempNumber);
}

这段代码有什么问题.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环内好还是循环外好?为什么?


先整理这些,后面慢慢的添加答案。

你可能感兴趣的:(IOS技术)