IOS面试题object-c 51-60

51. 阐述常见的 Objective-C 的数据类型 ?

Objective-C的数据类型有NSString,NSNumber,NSArray,NSMutableArray,NSData等等,这些都是class,创建后便是对象,而C语言的基本数据类型int,只是一定字节的内存空间,用于存放数值;

NSInteger是基本数据类型,并不是NSNumber的子类,当然也不是NSObject的子类。

NSInteger是基本数据类型Int或者Long的别名(NSInteger的定义typedef long NSInteger),它的区别在于,NSInteger会根据系统是32位还是64位来决定是本身是int还是long

🚀🚀🚀🚀🚀🚀
 52. Object-C id 声明的对象有什么特性?
id声明的对象具有运行时的特性,即可以指向任何类型的OC对象。
(1) 没有*号
(2)动态数据类型
(3)可以执行任何类的对象,而不关心它的具体的数据类型
(4)在运行时检查它的具体的数据类型
(5)可以对其发送任何的消息
🚀🚀🚀🚀🚀🚀
53. 简述Objective-C 如何对内存管理的 ?
Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池
1). 自动内存计数ARC:由Xcode自动在App编译阶段,在代码中添加内存管理代码。
2). 手动内存计数MRC:遵循内存谁申请、谁释放;谁添加,谁释放的原则。
3). 内存释放池Release Pool:把需要释放的内存统一放在一个池子中,当池子被抽干后(drain),池子中所有的内存空间也被自动释放掉。内存池的释放操作分为自动和手动。自动释放受runloop机制影响。

OC内存管理遵循“谁创建,谁释放,谁引用,谁管理”的机制,当创建或引用一个对象的时候,需要向她发送alloc、copy、retain消息,当释放该对象时需要发送release消息,当对象引用计数为0时,系统将释放该对象,这是OC的手动管理机制(MRC)。
目前:iOS 5.0之后引用自动管理机制——自动引用计数(ARC),管理机制与手动机制一样,只是不再需要调用retain、release、autorelease;它编译时的特性,当你使用ARC时,在适当位置插入release和autorelease;它引用strong和weak关键字,strong修饰的指针变量指向对象时,当指针指向新值或者指针不复存在,相关联的对象就会自动释放,而weak修饰的指针变量指向对象,当对象的拥有者指向新值或者不存在时weak修饰的指针会自动置为nil。
如果使用alloc、copy(mutableCopy)或者retian一个对象时,你就有义务,向它发送一条release或者autorelease消息。其他方法创建的对象,不需要由你来管理内存。
🚀🚀🚀🚀🚀🚀
54. 阐述 Objective-C 中创建线程的方法 ?
线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue;在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:
🚀🚀🚀🚀🚀🚀
55. Category(类别)、 Extension(扩展)和继承的区别?
区别:
1. 分类有名字,类扩展没有分类名字,是一种特殊的分类。
2. 分类只能扩展方法(属性仅仅是声明,并没真正实现),类扩展可以扩展属性、成员变量和方法。
3. 继承可以增加,修改或者删除方法,并且可以增加属性。
56. 常见的Delegate属性都用是week而不是retain/strong?
是为了防止delegate两端产生不必要的循环引用。
@property (nonatomic, weak) id delegate;
🚀🚀🚀🚀🚀🚀
57. 简述Object-C什么时候用Delegate,什么时候用Notification?
Delegate(委托模式):1对1的反向消息通知功能。
Notification(通知模式):只想要把消息发送出去,告知某些状态的变化。
🚀🚀🚀🚀🚀🚀
 58. 简述 OC中的反射机制?
1). class反射
通过类名的字符串形式实例化对象。
Class class = NSClassFromString(@"student");
Student *stu = [[class alloc] init];
将类名变为字符串。
Class class =[Student class];
NSString *className = NSStringFromClass(class);
2). SEL的反射
通过方法的字符串形式实例化方法。
SEL selector = NSSelectorFromString(@"setName");
[stu performSelector:selector withObject:@"Mike"];
将方法变成字符串。
NSStringFromSelector(@selector*(setName:));
🚀🚀🚀🚀🚀🚀
59. 阐述什么是OC 谓词?
谓词就是通过NSPredicate给定的逻辑条件作为约束条件,完成对数据的筛选
//定义谓词对象,谓词对象中包含了过滤条件(过滤条件比较多)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",30];
//使用谓词条件过滤数组中的元素,过滤之后返回查询的结果
NSArray *array = [persons filteredArrayUsingPredicate:predicate];
🚀🚀🚀🚀🚀🚀
60. Object-C如何访问并修改一个类的私有属性?
1). 一种是通过KVC获取。
2). 通过runtime访问并修改私有属性。
🚀🚀🚀🚀🚀🚀

相关推荐

  1. IOS面试object-c 51-60

    2024-03-10 08:46:03       22 阅读
  2. IOS面试object-c 61-70

    2024-03-10 08:46:03       19 阅读
  3. IOS面试object-c 41-50

    2024-03-10 08:46:03       23 阅读
  4. IOS面试编程机制 56-60

    2024-03-10 08:46:03       14 阅读
  5. IOS面试object-c 1-10

    2024-03-10 08:46:03       21 阅读
  6. IOS面试object-c 11-20

    2024-03-10 08:46:03       18 阅读
  7. IOS面试object-c 71-80

    2024-03-10 08:46:03       18 阅读
  8. IOS面试object-c 31-40

    2024-03-10 08:46:03       20 阅读
  9. IOS面试object-c 21-30

    2024-03-10 08:46:03       22 阅读
  10. IOS面试object-c 101-110

    2024-03-10 08:46:03       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 08:46:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 08:46:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 08:46:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 08:46:03       18 阅读

热门阅读

  1. rust开发100问?

    2024-03-10 08:46:03       21 阅读
  2. docker删除、停止所有容器或镜像

    2024-03-10 08:46:03       22 阅读
  3. 英语随笔,发散了 3.9

    2024-03-10 08:46:03       23 阅读
  4. iOS小技能:设置app语言(跟随系统和特定语言)

    2024-03-10 08:46:03       22 阅读
  5. AJAX-常用请求方法和数据提交

    2024-03-10 08:46:03       19 阅读
  6. mysql和redis的区别

    2024-03-10 08:46:03       19 阅读
  7. 表单进阶(4)-下拉菜单

    2024-03-10 08:46:03       18 阅读
  8. 大型语言模型的智能助手:检索增强生成(RAG)

    2024-03-10 08:46:03       20 阅读
  9. 编程笔记 html5&css&js 005 小学数学四则运算练习

    2024-03-10 08:46:03       19 阅读
  10. [力扣 Hot100]Day46 二叉树展开为链表

    2024-03-10 08:46:03       22 阅读
  11. 面试中如何介绍zookeeper的ZAB协议

    2024-03-10 08:46:03       21 阅读
  12. .Net Core/.net 6/.Net 8 实现Mqtt服务器

    2024-03-10 08:46:03       18 阅读
  13. 【杂言】迟到的 2024 展望

    2024-03-10 08:46:03       22 阅读