
iOS 面试题
Pika_HoneyMoon
iOS开发工程师,正在学习与进步中。
展开
-
iOS开发SDK需要注意的几点总结
1. 修改类别文件名及类别方法。开发SDK时通常会用到比较多的第三方的类别方法, 这样的话, 开发者在使用你的SDK时, 因为他可能也会加一些第三方的开源库, 比如都使用了NSString的md5类别文件。 由于这两个文件都是从网上下载来下的, 所以文件名是一样的。 这样在编译时就会报错。 然后就想到要去修改这个类别文件名, 等修改类别文件名后。 发现类别中的方法名是一样的, 而ios在调用两...原创 2019-12-27 16:01:17 · 429 阅读 · 0 评论 -
开发者需要知道的iOS13新特性
一.Dark Mode首先说万金油适配方法,如果希望在iOS依旧保持原来的样子,就在plist文件增加key-value,如图1.)全局适配不设置背景颜色的视图,背景颜色会根据系统设置的模式改变iOS13中uiviewcontroller和uiview新增了overrideUserInterfaceStyle属性,通过设置这个属性可以改变vc或view本身及其子视图的模式(light...原创 2019-11-27 12:48:55 · 684 阅读 · 0 评论 -
iOS性能、内存分布与TaggedPointer
iOS中的五大内存区域iOS中的内存区域从低地址到高地址分别为 .text段(代码区)、.data段(已初始化的全局变量、静态变量)、.bss段(未初始化的全局变量、静态变量)、堆区、栈区。image.png保留段:用于给系统提供一些必要的空间;内核区:由系统使用;这里说明一点:栈区从上往下走,堆区会从下往上走,当两个相遇的时候,则会发生堆栈溢出。 // 一...原创 2019-06-17 14:34:44 · 685 阅读 · 0 评论 -
iOS中的触摸事件 事件传递及响应链
ios中的其他ui控件,如UIWindow,UIButton,UIlabel等都是继承自UIView,也就是说,他们的响应事件也是如UIView一样,由UIResponder负责,比如,单指点击,滑动,缩放等,而其中则是由The Responder Chain负责各种交互在不同层次的传递与判断由谁响应。在官方文档中介绍了如何寻找hit-test view 和 first responder o...原创 2019-06-17 11:32:25 · 665 阅读 · 0 评论 -
Runtime知识点总结
Runtime和Runloop一般是iOS面试中必问的知识点,虽然平时开发用到的场景不多,但这也是iOS开发人员必须要掌握的知识技能之一。Runloop的概念和应用在之前的博客中已经有两篇来总结了,下面是来说一下runtime。给大家推荐一份资料,上面总结的runtime相当不错!附上链接:Runtime介绍PDF篇...原创 2019-06-17 11:16:47 · 206 阅读 · 0 评论 -
Runtime的应用场景
1、动态给分类添加属性这个应该使用的比较频繁,通过runtime动态添加属性,可以给系统类添加自定义属性,灵活使用,可以带来神奇的效果。//(block直接调用手势的action)+ (instancetype)mm_gestureRecognizerWithActionBlock:(MMGestureBlock)block { __typeof(self) weakSelf ...原创 2019-06-17 11:11:05 · 315 阅读 · 0 评论 -
RunLoop(二)常见实际应用场景
实际应用场景:Timer定时器问题我们在vc中创建一个定时器,然后在view上面添加一个滚动视图,比如说scrollView,可以发现在scrollView滚动的时候,timer定时器会卡住,停止滚动之后才重新生效。这个问题比较简单,也是我们经常遇到的。因为定时器默认是添加在了RunLoop的NSDefaultRunLoopMode模式下,scrollView在滚动的时候会进入UI...原创 2019-06-17 11:03:32 · 699 阅读 · 0 评论 -
RunLoop的内部实现
一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事件但并不退出,通常的代码逻辑 是这样的: function loop() { initialize(); do { var message = get_next_message(); process_me...原创 2019-06-17 10:57:00 · 404 阅读 · 0 评论 -
iOSAPP前台后台切换的处理
对于APP前后台切换的监听,大家所熟知的就是,在AppDelegate中实现下面两个方法,能够监听从后台恢复到前台- (void)applicationDidEnterBackground:(UIApplication *)application { log4info(@"---applicationDidEnterBackground----"); //进入后台原创 2017-05-03 14:41:45 · 1880 阅读 · 0 评论 -
iOS开发遇到memory持续上涨导致页面crash问题解决思路
我遇到的情况是memory占用过多,被系统kill掉了一部分正在占用的内存,导致程序运行出错,而crash;这种情况主要是通过分析memory allocation,解决memory issues; 分析memory和time profile在IOS中常用Instruments来帮助分析memory allocation和memory leak;通过连线测试app运行过程中转载 2017-07-31 14:59:36 · 2464 阅读 · 0 评论 -
NSArray与NSMutableArray应该使用copy还是strong?
先说标题的正确答案:@property (nonatomic,copy) NSArray *immutableArray;@property (nonatomic,strong) NSMutableArray *mutableArray;其他集合:NSArray,NSDictionary,NSSet -> copyNSMutableArray,NSMutableDi...原创 2018-11-06 14:16:41 · 2029 阅读 · 0 评论