️ 邪神
过好生活每一天, 火辣辣的日子也时常伴随着你
展开
-
IOS面试题编程机制 71-75
71. 简述有哪几种手势通知方法? -(void)touchesBegan:(NSSet*)touchedwithEvent:(UIEvent*)event; -(void)touchesMoved:(NSSet*)touched withEvent:(UIEvent*)event; -(void)touchesEnded:(NSSet*)touchedwithEvent:(UIEvent*)event; -(void)touchesCanceled:(NSSet*)touchedwi原创 2024-03-26 03:57:18 · 639 阅读 · 0 评论 -
IOS面试题编程机制 66-70
66. Framework与Library的区别?动态库与静态库的区别? library与Framework的区别: 在iOS中,Library 仅能包含编译后的代码,即 .a 文件。 但一般来说,一个完整的模块不仅有代码,还可能包含.h 头文修的、.nib 视图文件、图片资源文件、说明文档。(像 UMeng 提供的那些库,集成时,要把一堆的文件拖到Xcode中,配置起来真不是省心的事。 Framework 作为 Cocoa/Cocoa Touch 中使用的一种资源打包方式,可以上述文原创 2024-03-26 03:52:54 · 292 阅读 · 0 评论 -
IOS面试题编程机制 61-65
61. 简述NSOperationQueue与GCD的区别?原创 2024-03-25 01:10:49 · 680 阅读 · 0 评论 -
IOS面试题编程机制 56-60
56. IOS自动释放池是什么,如何工作? 自动释放池是cocoa提供的帮助我们管理对象内存的一个工具。当我们像一个对象发送autorelease消息时,这个对象就自动加入到最新的自动释放池中,当自动释放池被销毁的时候,会自动向自动释放池中的所有对象发送一条release消息。也就是说我们不再需要手动向每一个对象发送release消息以释放对象,而是将其加入到自动释放池中最后统一释放。使用自动释放池也可以避免一些人为原因导致的内存泄漏。 57. iPhone OS主要提供了几种播放音频的方法?原创 2024-03-24 21:35:37 · 564 阅读 · 0 评论 -
IOS面试题编程机制 51-55
51. 在iPhone应用中如何保存数据? 有以下几种保存机制: 1).通过web服务,保存在服务器上 2).通过NSCoder固化机制,将对象保存在文件中 3).通过SQlite或CoreData保存在文件数据库中 52. 阐述Block 的理解?并写出一个使用Block执行UIVew动画? Block是可以获取其他函数局部变量的匿名函数,其不但方便开发,并且可以大幅提高应用的执行效率(多核心CPU可直接处理Block指令) [UIView?transitionWith原创 2024-03-24 21:29:04 · 304 阅读 · 0 评论 -
IOS面试题编程机制 46-50
46. 阐述 Method Swizzle(黑魔法),什么情况下会使用? 1). 在没有一个类的实现源码的情况下,想改变其中一个方法的实现,除了继承它重写、和借助类别重名方法暴力抢先之外,还有更加灵活的方法 Method Swizzle。 2). Method Swizzle 指的是改变一个已存在的选择器对应的实现的过程。OC中方法的调用能够在运行时通过改变,通过改变类的调度表中选择器到最终函数间的映射关系。 3). 在OC中调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是sel原创 2024-03-24 02:50:09 · 467 阅读 · 0 评论 -
IOS面试题编程机制 41-45
在objc动态编译时,会被转意为:objc_msgSend(stu, @selector(show));// OC是动态语言,每个方法在运行时会被动态转为消息发送,即:objc_msgSend(receiver, selector)。3). 实际上我们编写的所有OC代码,最终都是转成了runtime库的东西。4). 因此,可以说 Runtime 是OC的底层实现,是OC的幕后执行者。Runtime库里面包含了跟类、成员变量、方法相关的API。方法转成了 Runtime 库里面的C语言函数,原创 2024-03-24 02:47:07 · 374 阅读 · 0 评论 -
IOS面试题编程机制 36-40
40. BAD_ACCESS在什么情况下出现?原创 2024-03-24 02:43:51 · 327 阅读 · 0 评论 -
IOS面试题编程机制 31-35
31. KVC和KVO的keyPath一定是属性么? KVC 支持实例变量, KVO 只能手动支持 实例变量。即KVO需要自己在set方法里实现willChangeValueForKey didChangeValueForKey 还要自己实现 automaticallyNotifiesObserversForKey 手动进行监听。 ----------------------------------- // // Student.h // #import @in原创 2024-03-24 02:40:44 · 334 阅读 · 0 评论 -
IOS面试题编程机制 26-30
26. 简述IOS是如何实现autoreleasepool? autoreleasepool 自动释放池,在池子里的对象如果没有被强引用都会自动释放掉,自动释放池的主要底层数据结构是:__AtAutoreleasePool、AutoreleasePoolPage,调用了autorelease的对象最终都是通过 AutoreleasePoolPage 对象来管理的。 27. GCD的队列(dispatch_queue_t)分哪两种类型? 串行队列和并行队列 串行队列:队列中的任务只会顺序执行原创 2024-03-24 02:37:30 · 353 阅读 · 0 评论 -
IOS面试题编程机制 21-25
21. IOS使用Runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么? 在ARC下不需要 在MRC中,对于使用retain或copy策略的需 22. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量? 因为编译后的类已经注册在 runtime 中,类结构体中的 objc_ivar_list 实例变量的链表 和 instance_size 实例变量的内存大小已经确定,同时runtime 会调用 class_setIvarLayout原创 2024-03-24 02:34:11 · 634 阅读 · 0 评论 -
IOS面试题编程机制 16-20
16. 详述iOS 中的事件的传递:响应链? 事件沿着一个指定的路径传递直到它遇见可以处理它的对象。 首先一个UIApplication 对象从队列顶部获取一个事件并分发(dispatches)它以便处理。 通常,它把事件传递给应用程序的关键窗口对象,该对象把事件传递给一个初始对象来处理。 初始对象取决于事件的类型。 触摸事件。 对于触摸事件,窗口对象首先尝试把事件传递给触摸发生的视图。那个视图被称为hit-test(点击测试)视图。 寻找hit-test视图的过程被称为hit-testing,原创 2024-03-22 16:11:34 · 313 阅读 · 0 评论 -
IOS面试题编程机制 11-15
11. 简述对NSUserDefaults的理解? NSUserDefaults,官网上的定义是一个用户默认数据库的接口,在应用程序的启动过程中,持久地存储键值对。每个应用都有一个(也只有一个)NSUserDefaults对象。向NSUserDefaults类发送standardUserDefaults消息可以得到该对象。使用时需要通过键来存取其保存的对象。此外,当应用第一次使用NSUserDefaults对象时,这个对象会自动地从特定文件读取数据;修改数据后,该对象也会自动地将数据写入文件。 N原创 2024-03-22 16:00:26 · 922 阅读 · 0 评论 -
IOS面试题编程机制 6-10
6. 如何理解MVVM设计模式?原创 2024-03-22 01:25:17 · 669 阅读 · 0 评论 -
IOS面试题编程机制 1-5
1. 简述IOS自动释放池工作原理? 自动释放池是NSAutorelease类的一个实例,当向一个对象发送 autorelease消息时,该对象会自动入池,待池销毁时,将会向池中所有对象发送一条release消息,释放对象。 [pool release]、 [pool drain]表示的是池本身不会销毁,而是池子中的临时对象都被发送release,从而将对象销毁 自动释放池是 OC 中的一种内存自动回收机制,它可以将加入 autoreleasePool 中的变量 release 的时机原创 2024-03-22 01:21:03 · 850 阅读 · 0 评论 -
IOS面试题object-c 149-152
149. 简述使用 nonatomic 一定是线程安全的吗 ? nonatomic 的内存管理语义是非原子的, 非原子的操作本来就是线程不安全的, 而 atomic 的操作是原子的, 但是并不意味着它是线程安全的, 它会增加正确的几率, 能够更好的避免线程的错误, 但是它仍然是线程不安全的. 当使用 nonatomic 的时候, 属性的 setter 和 getter 操作是非原子的, 所以当多个线程同时对某一属性进行读和写的操作, 属性的最终结果是不 能预测的. 当使用 ato原创 2024-03-17 18:56:10 · 421 阅读 · 0 评论 -
IOS面试题object-c 146-150
145. 简述NSCache 优于 NSDictionary 的几点? ? NSCache 是一个非常奇怪的集合。默认为可变并且线程安全的。这使它很适合缓存那些创建起来代价高昂的对象。它自动对内存警告做出反应并基于可设置的成本清理自己。与NSDictionary相比,键是被retain而不是被拷贝的。 当系统资源将要耗尽时,NSCache可以自动删减缓存。如果采用普通的字典,那么就要自己编写挂钩,在系统通知时手动删减缓存,NSCache会先行删减时间最久为被使用的对象。 NSCache 并不原创 2024-03-17 18:51:28 · 354 阅读 · 0 评论 -
IOS面试题object-c 141-145
141. 简述block访问对象类型的auto变量时,在ARC和MRC下有什么区别? ? 首先我们知道,在ARC下,栈区创建的block会自动copy到堆区;而MRC下,就不会自动拷贝了,需要我们手动调用copy函数。 我们再说说block的copy操作,当block从栈区copy到堆区的过程中,也会对block内部访问的外部变量进行处理,它会调用Block_object_assign函数对变量进行处理,根据外部变量是strong还会weak对block内部捕获的变量进行引用计数+1或-1,从而达原创 2024-03-17 18:46:29 · 186 阅读 · 0 评论 -
IOS面试题object-c 136-140
136. 简述block在修改NSMutableArray,需不需要添加__block ? ? 如果修改的是NSMutableArray的存储内容的话,是不需要添加__block修饰的。 如果修改的是 NSMutableArray对象的本身,那必须添加__block修饰。 参考block的变量捕获(第3点) 🚀🚀🚀🚀🚀🚀 137. 简述block怎么进行内存管理的? ? 当block内部引用全局变量或者不引用任何外部变量时,该block是在全局内存中的。(全局静态block) 当原创 2024-03-17 18:40:39 · 464 阅读 · 0 评论 -
IOS面试题object-c 131-135
如果一个block里面访问了普通的局部变量,那它就是一个__NSStackBlock__,它在内存中存储在栈区,栈区的特点就是其释放不受开发者控制,都是由系统管理释放操作的,所以在调用__NSStackBlock__类型block时要注意,一定要确保它还没被释放。一个__NSStackBlock__类型block做调用copy,那会将这个block从栈复制到堆上,堆上的这个block类型就是__NSMallocBlock__,所以__NSMallocBlock__类型的block是存储在堆区。原创 2024-03-17 18:34:39 · 338 阅读 · 0 评论 -
IOS面试题object-c 126-130
126. 简述Objective-C如何对内存管理的,说说你的看法和解决方法? ? Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。 1). (Garbage Collection)自动内存计数:这种方式和java类似,在你的程序的执行过程中。始终有一个高人在背后准确地帮你收拾垃圾,你不用考虑它什么时候开始工作,怎样工作。你只需要明白,我申请了一段内存空间,当我不再使用从而这段内存成为垃圾的时候,我就彻底的把它忘记掉,反正那个高人会帮我收拾垃圾。遗憾的是原创 2024-03-17 18:28:01 · 310 阅读 · 0 评论 -
IOS面试题object-c 121-125
object-c的数据类型有NSString,NSNumber,NSArray,NSMutableArray,NSData等等,这些都是class,创建后便是对象,而C语言的基本数据类型int,只是一定字节的内存空间,用于存放数值;@3. 当使用self调用方法时,会从当前类的方法列表中开始寻找,如果没有,就从父类中再找,而使用super时,则从父类的方法列表中开始找,然后调用父类的这个方法。注: 从super出现的在的方法所在的类的父类开始查找。原创 2024-03-17 18:18:09 · 247 阅读 · 0 评论 -
IOS面试题object-c 116-120
116. 简述什么是 method swizzling ?117. 简述runtime 如何通过 selector 找到对应的 IMP ?118. 简述runtime 如何实现 k weak 变量的自动置 nil ?知道 SideTable 吗? ?119. 简述objc 中向一个 l nil 对象发送消息将会发生什么? ?120. 简述objc 在向一个对象发送消息时,发生了什么 ?原创 2024-03-17 17:55:43 · 171 阅读 · 0 评论 -
IOS面试题object-c 111-115
111. 简述MRC (手动引用计数)和 ARC( 自动引用计数) ) ? 1 1 、 MRC : alloc , retain , release , retainCount,autorelease,dealloc 2 2 、 ARC : ARC 是 LLVM 和 Runtime 协作的结果 ARC 禁止手动调用 retain,release,retainCount,autorelease 关键字 ARC 新增 weak,strong 关键字 3 3 、 引用计数原创 2024-03-17 00:01:05 · 365 阅读 · 0 评论 -
IOS面试题object-c 101-110
104. 简述这个写法会出什么问题:@property (nonatomic, copy) NSMutableArray *arr;原创 2024-03-12 12:23:16 · 505 阅读 · 0 评论 -
IOS面试题object-c 91-100
93. Objective-C中id与void*有什么区别?id与instancetype有什么区别?nil、null、NULL三者有什么区别?96. Objective-c 中的数字对象都有哪些?原创 2024-03-12 12:00:57 · 728 阅读 · 0 评论 -
IOS面试题object-c 81-90
包括:NSURLRequest、NSURLCache、NSURLSession、NSURLSessionConfiguration、NSURLSessionDataTask、NSURLSessionUploadTask、NSURLSessionDownloadTask。,您可以使用 iPhone OS 上的独特的图形接口控件,按钮,以及全屏视图的功能,您还可以使用加速仪和多点触摸手势来控制您的应用。都是等效的setObject:forKey:.在其他类中,setValue:forKey:更改成员变量.原创 2024-03-11 06:59:47 · 368 阅读 · 0 评论 -
IOS面试题object-c 71-80
Category是类别, 一般情况用分类好, 用Category去重写类的方法, 仅对本Category有效, 不会影响到其他类与原有类的关系。的关键是使用接口,而不能直接使用 实现代 码,实际上cpp混用的是obj-c编译后的o文件,这个东西其实是无差别的,所以可以用。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。原创 2024-03-10 13:48:58 · 220 阅读 · 0 评论 -
IOS面试题object-c 61-70
当NSOperation的cancel方法被调用后,如果操作不在队列中,这个方法会将操作的isFinished设为YES,如果在操作队列中,这个方法会将操作对象的isCancelled状态设为YES,并且isReady设为YES,让队列调用它的start方法。需要指出的是,使用NSArray只表明的是该数组在运行时不发生改变,即不能往NSAarry的数组里新增和删除元素,但不表明其数组內的元素的内容不能发生改变。操作被添加到操作队列之后,操作队列会根据操作对象的优先级或者相互之间的依赖关系来执行操作。原创 2024-03-10 00:52:50 · 923 阅读 · 0 评论 -
IOS面试题object-c 51-60
NSInteger是基本数据类型Int或者Long的别名(NSInteger的定义typedef long NSInteger),它的区别在于,NSInteger会根据系统是32位还是64位来决定是本身是int还是long。NSInteger是基本数据类型,并不是NSNumber的子类,当然也不是NSObject的子类。,创建后便是对象,而C语言的基本数据类型int,只是一定字节的内存空间,用于存放数值;三种方式ARC(自动内存计数)、手动内存计数、内存池。Objective-C的数据类型有。原创 2024-03-09 13:45:45 · 176 阅读 · 0 评论 -
IOS面试题object-c 41-50
NSMutableString *strMCopy = [str mutableCopy] // 内容复制,strMCopy与str的地址不一样。NSString *strCopy = [str copy] // 指针复制,strCopy与str的地址一样。在非集合类对象中,对不可变对象进行copy操作,是指针复制,mutableCopy操作是内容复制;在集合类对象中,对不可变对象进行copy操作,是指针复制,mutableCopy操作是内容复制;setter方法将传入参数赋值给实例变量;原创 2024-03-09 00:37:19 · 225 阅读 · 0 评论 -
IOS面试题object-c 31-40
类对象有isa,superclass,方法,属性,协议列表,以及成员变量的描述。指针,指向他的类对象,类对象中存放着本身对象的a,对象方法列表(对象能够接收的消息列表,保存在它所对应的类对象中)b,成员变量的列表。类对象内也有一个isa指针指向元对象(meta class),元对象内部存放的是类方法列表,类对象内部还有哦一个。3.所有的对象调用方法都是一样的,没有必要存在对象中,对象可以有无数个,类对象就有一个所以只需存放在类对象中。1.对象isa指向类对象,类对象的isa指向元类。元类isa指向根元类。原创 2024-03-08 21:45:35 · 226 阅读 · 0 评论 -
IOS面试题object-c 21-30
其指针大小为小于或者等于sizeof(void*),float,double,long double 或者long long的整型标量,发送给nil的消息将返回0。使用 @property 也是只会生成setter和getter方法的声明,如果我们真的需要给category增加属性的实现,需要借助于运行时的两个函数。,那么发送给nil的消息将返回0(nil)。中使用property只会生成setter和getter方法声明,我们使用属性的目的,是希望遵守我协议的对象的实现该属性。原创 2024-03-08 21:07:12 · 594 阅读 · 0 评论 -
IOS面试题object-c 11-20
不过最终,由于 iPhone 的出现,Objective-C 迎来了第二春,在 TOBIE 语言排行榜上,从 20 名开外一路上升,排名曾经超越过 C++,达到了第三名,但是随着 swift 的出现,Objective-C 的排名则一路下滑。在设计之初,二者都是作为 C 语言的面向对象的接班人,希望成为事实上的标准。如果要在 block 执行中有效,只能让 block 在执行中,有一个机制来定期检查外部的变量是否有变化,而要做到这一点,需要改 block 执行中的代码。原创 2024-03-08 20:39:22 · 416 阅读 · 0 评论 -
IOS面试题object-c 1-10
在Retina设备上加载@2x的图片,而在老一些的普通苹设备上加载原图,让程序在运行时添加代码模块以及其他资源,用户可根据需要加载一些可执行代码和资源,而不是在启动时就加载所有组件,可执行代码可以含有和程序运行时整合的新类。比如说,外部传一个模型过来,那么我会直接重写Setter方法,当模型传过来时,也就是意味着数据发生了变化,那么视图也需要更新显示,则在赋值新模型的同时也去刷新UI。一般来说,在对象的方法里成员变量和方法都是可以访问的,我们通常会重写Setter方法来执行某些额外的工作。原创 2024-03-08 19:51:59 · 648 阅读 · 0 评论