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 小时前
Java重要面试名词整理(二十):Gateway&SkyWalking
java·面试·gateway·skywalking
绝无仅有2 小时前
go项目zero框架中用gentool解决指定表生成结构体被覆盖的解决方案
后端·面试·架构
HappyAcmen2 小时前
关于Redis的面试题目及其答案
数据库·redis·面试
嵌入式小杨4 小时前
阻抗(Impedance)、容抗(Capacitive Reactance)、感抗(Inductive Reactance)
单片机·嵌入式硬件·物联网·学习·面试·硬件工程
泰山小张只吃荷园7 小时前
SCAU软件体系结构期末复习-名词解释题
java·开发语言·后端·学习·spring·面试
苏谨深9 小时前
Quick Mock-创新性地将LinkedIn职位描述转化为AI驱动的模拟面试体验,帮助求职者通过实践提升面试技能
面试
FairGuard手游加固9 小时前
游戏如何检测iOS越狱
游戏·ios
长风清留扬9 小时前
零基础微信小程序开发——页面事件之下拉刷新事件(保姆级教程+超详细)
javascript·css·ios·微信小程序·小程序
深鱼~10 小时前
香橙派Zero3上搭建Code Server开发环境轻量级远程开发新体验
服务器·数据库·面试·职场和发展·智能手机
HEU_firejef10 小时前
面试经典150题——区间
算法·面试·职场和发展