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