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时调用

原文地址:https://www.cnblogs.com/fanxinguu/p/4532986.html