每一个不曾起舞的日子都是对生命的辜负。
Category是什么?重写一个类的方式用继承好还是分类好?
‘#import和#include有什么区别,@class呢?#import<>和#import””有什么区别
属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?
OC的理解与特性
简述内存管理基本原则
OC内存管理遵循“谁创建,谁释放,谁引用,谁管理”的机制,当创建或引用一个对象的时候,需要向她发送alloc、copy、retain消息,当释放该对象时需要发送release消息,当对象引用计数为0时,系统将释放该对象,这是OC的手动管理机制(MRC)。
自动引用计数(ARC),管理机制与手动机制一样,只是不再需要调用retain、release、autorelease;它引用strong和weak关键字,strong修饰的指针变量指向对象时,当指针指向新值或者指针不复存在,相关联的对象就会自动释放,而weak修饰的指针变量指向对象,当对象的拥有者指向新值或者不存在时weak修饰的指针会自动置为nil。
如果使用alloc、copy(mutableCopy)或者retian一个对象时,你就有义务,向它发送一条release或者autorelease消息。其他方法创建的对象,不需要由你来管理内存
向一个对象发送一条autorelease消息,这个对象并不会立即销毁, 而是将这个对象放入了自动释放池,待池子释放时,它会向池中每一个对象发送 一条release消息,以此来释放对象.
向一个对象发送release消息,并不意味着这个对象被销毁了,而是当这个对象的引用计数为0时,系统才会调用dealloc方法,释放该对象和对象本身它所拥有的实例。
如果一个对象有一个_strong类型的指针指向着,找个对象就不会被释放
如果一个指针指向超出了它的作用域,就会被指向nil。如果一个指针被指向nil,那么它原来指向的对象就被释放了;不管全局变量还是局部变量用_strong描述就行
局部变量:出了作用域,指针会被置为nil。
方法内部创建对象,外部使用需要添加_autorelease;
连线的时候,用_weak描述。
代理使用unsafe_unretained就相当于assign;
block中为了避免循环引用问题,使用_weak描述;
如何理解MVC设计模式
如何理解MVVM设计模式
Objective-C 中是否支持垃圾回收机制
协议的基本概念和协议中方法默认为什么类型
简述类目category优点和缺点
类别的作用
循环引用的产生原因,以及解决方法
键路径(keyPath)
键值编码KVC
键值观察(KVO)
在 Objective-C 中如何实现 KVO
代理的作用
NSNotification、Block、Delegate和KVO的区别
Objective-C中可修改和不可以修改类型
当我们释放我们的对象时,为什么需要调用[super dealloc]方法,它的位置又是如何的呢?
对谓词的认识
static、self、super关键字的作用
isMemberOfClass 和 isKindOfClass 联系与区别
iOS 开发中数据持久性有哪几种?
CoreData
自动释放池工作原理
解释self = [super init]方法
堆和栈的区别