1、编译器编译原理
2、xcode 的 Other linker flags
3、OC的消息转发机制
4、tcp/ip 和UDP区别
5、http和https
6、动态库和静态库的区别
7、线程锁、死锁
8、线程间怎么通信?
9、以下两种写法有什么区别?
if(x){
return 1;
}else{
return 2;
}
if(!x){
return 2;
}else{
return 1;
}
10、oc证书、配置文件都包括哪些内容?怎么来匹配的?如果配置文件是auto,又是怎么匹配的?
11、一个并发队列,1000个任务,顺序执行。怎么做才能顺序的完成?
12、一个子线程A,执行完毕后,得到结果a,A不结束,然后返回主线程用a更新B,然后再回到A使用a执行C。怎么做?runloop GCD source?
13、CF相关类
14、NSTimer、GCD timer、CADisplayLink
15、针对封装的时候,对一个集合操作,怎么来控制数据的安全性(读写时,barrier、锁、串行和并行?)
16、对数组进行copy,怎么样让数组内的对象也进行copy?
17、使用block的限制问题,循环引用问题,具体场景。block内使用函数内变量,除了_ _block以外还有什么办法?__block int a,这时候 a有什么变化,a的数据类型,数据结构,数据地址等。
18、int a = 2; a=3;这是怎么样对内存修改的,为什么在block里面不可以修改。
19、所有的block里面所有的对象都要用__weak吗?什么时候不用,block内部对象使用__strong的原因,block内部创建的对象,直接使用__weak会怎么样?
20、怎么测试一个对象是否已经被释放了?
21、数据库索引。
22、delegate的属性是什么?如果使用strong会出现什么问题,weak和assgin有什么区别。怎么验证?
23、oc对象的声明周期,dealloc什么时候调用。oc对象什么被释放,对象调用release时是否会立即释放。arc下内存的引用计数为0时,内存是否是立即释放。
24、release的实现
25、arc下如何强制释放对象。CFRelease、free
26、_obj和self.obj的区别,访问机制,懒加载
一个历史遗留的传统,以前必须先声明一个类成员变量,后来推出了点语法,就必须实现setter和getter方法,后来出现了@property自动生成setter和getter的声明,@synthesize生成setter和getter的具体内容,再后来做了简化,直接一个@property帮你全搞定了
@synthesize合成访问器
实现property所声明的方法的定义。其实说直白就像是:property声明了一些成员变量的访问方法,synthesize则定义了由property声明的方法。 他们之前的对应关系是:property 声明方法 ->头文件中申明getter和setter方法 synthesize定义方法 -> m文件中实现getter和setter方法。 在Xcode4.5及以后的版本中,可以省略@synthesize,编译器会自动帮你加上get 和 set 方法的实现,并且默认会去访问_age这个成员变量,如果找不到_age这个成员变量,会自动生成一个叫做 _age的私有成员变量。在.m文件中同时实现getter和setter时候需要@synthesize age = _age.使用self.obj是对属性的访问。使用_obj是对局部变量的访问。
27、《Objective-C高级编程》
28、OC中obj和&obj的区别
29、IMP直接调用的函数,函数里面调用self.属性都会creash,为什么?
{
SEL sel = NSSelectorFromString(@"nodeManager");
IMP imp = [self methodForSelector:sel];
imp();
}
- (void)nodeManager{
NodeListViewController *node = [[NodeListViewController alloc] init];
//self.navigationController会崩溃,一切self.属性都会出现问题
[self.navigationController pushViewController:node animated:YES];
}
网友评论