2016面试题整理

2016-04-20  本文已影响213人  韩七夏

1.weak和assign区别

2. 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?这个写法会出什么问题: @property (copy) NSMutableArray *array;

3. 下面的代码输出什么?

@implementation Son : Father

- (id)init

{

self = [super init];

if (self) {

NSLog(@"%@", NSStringFromClass([self class]));

NSLog(@"%@", NSStringFromClass([super class]));

}

return self;

}

@end

4.以+ scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决?

5.RunLoop和Autoreleasepool

6.什么是循环引用?使用block时什么情况会发生引用循环,如何解决?

7.NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"a",@"b",@"abc",nil];

NSMutableArray *mArrayCount = [NSMutableArray arrayWithCapacity:1];

[mArray enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock: ^(id obj,NSUInteger idx, BOOL *stop){

[mArrayCount addObject:[NSNumber numberWithInt:[obj length]]];

}];

NSLog(@"%@",mArrayCount);

8.多线程相关:

如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)

9.KVC KVO 原理

10.线程间如何通信

11.__weak 和 __block有啥区别,ARC环境下

1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。

2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。

3.__block对象可以在block中被重新赋值,__weak不可以。

12.cell复用

一个显示中的Cell队列,一个可复用队列

屏幕上的Cell移出屏幕后会移到可复用队列中

新的Cell在创建之前会去复用队列里面取,取不到就alloc一个

循环引用产生的原因就是两个对象分别对彼此强引用,造成一方释放前都需要先把对方释放,造成死锁

上一篇 下一篇

猜你喜欢

热点阅读