iOS经典面试题

 
 
@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?

猜你喜欢

转载自blog.csdn.net/qq_36428821/article/details/78400744