16. 在 ARC 下 不显示制定属性关键字,默认有哪些关键字。
atomic,readwrite,strong(对象),assign(基本数据类型)。
17. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
因为编译后类的相关的信息已经注册在 runtime 之中了,类在运行的过程中维护类的数据结构所占的内存的大小已经确定了,此时,不可能向类中再添加具体的实例变量了;
在运行时创建的类不一样,在没有调用相应的函数(objc_registerClassPair )之前,是可以添加相关的实例变量的,这其实也是无可厚非的,如果这时候都不能添加类的成员变量的话,那么在运行时去创建类的意义就不是很大了。
18. 猜想runloop内部是如何实现的? *
其实 runloop 的实质也是一种事件循环的机制,有代码简单来说,就是这样:
function loop() {
initialize();
do {
var message = get_next_message();
process_message(message);
} while (message != quit);}
19. objc 中向一个 nil 对象发送消息将会发生什么?
在其它的语言当中,对一个空指针进行相关的操作往往会造成崩溃的情况,但是对于 Objective-C 来说,向一个空指针发送消息是完全有效的,并不会造成程序的崩溃。
如果一个消息没有返回值,向一个 nil 对象发送这样的消息,不会执行任何的操作,对于一个拥有返回值的消息来说,向一个 nil 对象发送这样的消息,消息会返回空对象或者 0;
20. objc中向一个对象发送消息[obj foo]和objc_msgSend()函数之间有什么关系?
在 Objective-C 中向任何一个对象发送任何的消息,最终都会间接地调用到了 objc_msgSend() 函数。
原文地址:https://blog.csdn.net/majian89351268/article/details/123972908
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_39372.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!