iOS经典面试题

来源:互联网 发布:ubuntu 修改启动界面 编辑:程序博客网 时间:2024/05/29 03:08
@property中有哪些属性关键字?weak属性需要在dealloc中置nil么?@synthesize和@dynamic分别有什么作用?ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些?用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?@synthesize合成实例变量的规则是什么?假如property名为foo,存在一个名为_foo的实例变量,那么还会自动合成新变量么?在有了自动合成属性实例变量之后,@synthesize还有哪些使用场景?objc中向一个nil对象发送消息将会发生什么?objc中向一个对象发送消息[obj foo]和objc_msgSend()函数之间有什么关系?什么时候会报unrecognized selector的异常?一个objc对象如何进行内存布局?(考虑有父类的情况)一个objc对象的isa的指针指向什么?有什么作用?下面的代码输出什么?
runtime如何通过selector找到对应的IMP地址?(分别考虑类方法和实例方法)使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?objc中的类方法和实例方法有什么本质区别和联系?_objc_msgForward函数是做什么的,直接调用它将会发生什么?runtime如何实现weak变量的自动置nil?能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?runloop和线程有什么关系?runloop的mode作用是什么?以+ scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决?猜想runloop内部是如何实现的?objc使用什么机制管理对象内存?ARC通过什么方式帮助开发者管理内存?不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建)BAD_ACCESS在什么情况下出现?苹果是如何实现autoreleasepool的?使用block时什么情况会发生引用循环,如何解决?在block内如何修改block外部变量?使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?
GCD的队列(dispatch_queue_t)分哪两种类型?如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)dispatch_barrier_async的作用是什么?苹果为什么要废弃dispatch_get_current_queue?