1.Object-c的类可以多重继承么?可以实现多个接口么?
没有,protocol代替,Object-c的类不可以多重继承。
2.#import 跟#include有什么区别,@class呢? #import<>跟#import“”有什么区别
#import能防止重复引用,#include不能,@class前置声明一个类. <>是引用系统头文件 ""是表示引用本地头文件
3.属性readwrite,readonly,assign,retain,copy,nonatomic各是什么作用,在哪种情况下用?
readwrite-----可读写特性;需要生成getter和setter方法时
readonly----只读 只会生成getter方法,不希望属性在类外改变
assign----赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时
retain----持有特性,setter方法将传入参数先保留,在赋值,传入参数的retaincount会+1;
copy---赋值特性,setter方法将传入对象复制一份;需要完全一份新的变量时。
nonatomic---非原子操作,决定编译器生成的setter getter是否为原子操作,atomic表示多线程安全,一般使用nonatomic
4.为何很多内置的类如TableViewController的delegate的属性是assign不是retain?
防止循环引用
5.定义属性时,什么情况使用copy,assign,retain?
copy---拷贝对象。 assign--传值,一般用于基础类型. retain---传地址,引用计数+1.
6.委托是什么?委托的property声明用什么属性?why?
代理的目的是改变或传递控制链,允许一个类在某些特定时刻通知到其他类而不需要获取那些类的指针.
7.类别的作用
1)、将类的实现分散到多个类中 2)、可以添加或修改方法,属性。
8. id声明的对象有什么特性?
可以是任意类型的对象,是个很重要的类型,是个可以指向任何类型的指针或者可以理解为指向任何未知类型的指针。
9.MVC是什么?有什么特性?为何在iPhone上被广泛运用?
MVC设计模式是三种对象:模型对象,视图对象和控制器对象.模型对象代表应用程序的数据和定义操作数据的逻辑. 视图对象显示应用程序的模型数据。
控制器对象是协调视图和模型对象。
10.对于语句NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别时什么类型的对象?
编译的时候是NSString 运行时候是NSdata 会有警告
11..什么是安全释放?
if(object){[object release]; object = nil;}
12.什么是Notification
Notification是一种消息,它传递给一个或多个观察对象来通知他们程序里发生了一个事件
13.什么是Delegate,什么时候调用Notification
当处理单个需要在另外类触发当前类行为的事件时用代理,多个事件用Notification
14.
notification是同步还是异步? kvo是同步还是异步?notification是全进程空间的通知吗?kvo呢?
notification是同步的。notification不是全进程空间
15.谈谈对ARC的认识理解
代码中会自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动由编译器完成,代码高速化
,由于使用编译器管理引用计数,减少了低效代码的可能性
16.ViewController的loadView,viewDidLoad,viewDidUnload分别是在什么时候调用的?
view为空时调用loadView,加载完成时调用viewDidLoad,释放时调用viewDidUnload
17.self.跟self区别?
self.表示对象的属性,self表示对象本身
18.id、nil代表什么? id相当于vvoid *, nil时空对象
19.考察对@interface与@property的理解
只用@interface声明的变量只能在当前的类中访问,在其他类无法访问,而@property声明的变量可以在外部访问,
20.frame 和 bounds的区别,bound的大小改变frame改变嘛?
frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
bounds:该view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,以0,0点为起点)
center:该view的中心点在父view坐标系统中的位置和大小
bounds影响到子view的位置和大小