ios面试题
1.控制器创建的方式?
1).alloc init方式创建
在AppDelegate中添加
UIViewController * vc = [[UIViewcontroller alloc]init];
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
2)UIstoryboard加载控制器
UIViewController * vc = [[UIStoryboard storyboardWithName:()storyboardBundle()]instantiateViewControllerWithIdentifier()];
3)从Xib中创建
2.分类的用途?分类能定义成员变量吗?
分类是对现有类的拓展,分类只能拓展方法,不能拓展属性
3.readwrite readonly assign copy nonatomic属性的作用
readwrite readonly 设置可供访问级别
assign setter方法直接复制,不济宁retain操作,为了解决循环引用问题
retain setter方法对参数进行release旧值在retain新值
copy setter方法进行欧诺个Copy操作,与retain处理流程一样,先旧值release,再Copy出现对象,retainCount为1.这是为了减少对上下文的依赖而引入的机制
nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。注意,如果不加此属性,则默认是两个访问方法都为院子型事物访问。
4.在一个对象方法里面:self.name = @"aaa"与name = @"aaa"有什么区别
self.name = @"aaa";会调用对象的setter方法
name = @“aaa”直接赋值
5.请简述self.name = nil的机制,以及与[name release]的区别
self.name = nil; //使用nil参数调用setName方法
[name release]生成的访问器将自动释放以前的name对象
6.请简要说明viewDidLoad和viewDidUnLoad何时调用,didReceiveMemory\
viewDidLoad在view从nib文件中初始化时调用,loadView在controller的view为nil时调用