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访问并修改私有属性。 |
| 🚀🚀🚀🚀🚀🚀 |

相关推荐
smallcatlei18 分钟前
ios 快捷指令扩展(Intents Extension)简单使用 swift语言
ios·swift
Iareges1 小时前
美团2025校招 广告算法工程师 面经
算法·面试·求职招聘·笔试·秋招
半夏之沫5 小时前
✨最新金九银十✨大厂后端面经✨
java·后端·面试
旋转的油纸伞6 小时前
大模型,多模态大模型面试【LoRA,分类,动静态数据类型,DDPM,ControlNet,IP-Adapter, Stable Diffusion】
算法·leetcode·面试·职场和发展·散列表
程序员yt7 小时前
2025秋招八股文--服务器篇
linux·运维·服务器·c++·后端·面试
web_code7 小时前
vite依赖预构建(源码分析)
前端·面试·vite
秋恬意9 小时前
LinkedList 源码分析
java·开发语言·面试
JSON_L11 小时前
面试题整理1
后端·面试·php
鱼跃鹰飞12 小时前
大厂面试真题-简单描述一下SpringBoot的启动过程
java·spring boot·后端·spring·面试
Pandaconda13 小时前
【计算机网络 - 基础问题】每日 3 题(五十九)
开发语言·经验分享·笔记·后端·计算机网络·面试·职场和发展