移动开发

iOS 高级面试题--答案

目录 iOS 基础题 1. 分类和扩展有什么区别?可以分别用来做什么?分类有哪些局限性?分类的结构体里面有哪些成员? 2.讲一下atomic的实现机制;为什么不能保证绝对的线程安全(最好可以结合场景来说)? 3. 被weak修饰的对象在被释放的时候会发生什么?是如何实现的?知道sideTable么?里面的结构可以画出来么? 4. 关联对象有什么应用,系统如何管理关联对象?其被释放的时候需要手动将所

iOS-button响应流程

Button响应首先从触摸屏幕开始 在这之前,需要了解坐标转换及原因 程序员的逻辑往往如图所示 image.png 也就是UI逻辑中,使用的坐标点往往是相对于父布局的,而布局会嵌套多层 屏幕上的触点,判断落点归属于哪个UI控件的话,就需要让所有UI控件的坐标点转换为相对于 window的 这样转换后的坐标就变为 image.png 直观是这样的逻辑,但真实的检测过程实际是

设计模式之装饰器模式

也称装饰者模式、装饰器模式、Wrapper、Decorator。 装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 解决方案 当你需要更改一个对象的行为时, 第一个跳入脑海的想法就是扩展它所属的类。 但是, 你不能忽视继承可能引发的几个严重问题。 继承是静态的。 你无法在运行时更改已有对象的行为, 只能使用由不同子类创建的对象来替代当前的整个对

Flutter PopupMenuButton 详解

1. 引言        在 Flutter 中,PopupMenuButton 是一个用于创建弹出菜单的组件,适用于提供上下文操作、设置选项等功能。用户点击按钮后,会弹出一个菜单列表,供用户选择。本文将介绍 PopupMenuButton 的基本用法、主要属性及自定义样式。2. PopupMenuButton 的基本用法    PopupM

IOS之二进制重拍

原理 App包数据并不是在启动的时候一次全部加载到内存中的,而是类似于懒加载的方式,以每页16KB的数据进行分页加载。启动的时刻,也是缺页加载次数最多的时刻。因为启动用到的类和方法,并不是全部集中在某几页数据中,而是根据编译顺序,分散到不确定的分页数据中。我们做二进制重拍,也就是要让启动用到的函数,集中到最前边的几张表中,减少分页加载的次数,也就节约了启动时间。 那么为什么减少分页加载的次数,可以

Touch:iOS判断当前点击的位置是否在某个视图上

iOS判断当前点击的位置是否在某个视图上 记录几种判断触摸点是否在某个view上面的方法 第一种方式:isDescendantOfView: 通过touch.view调用 isDescendantOfView:方法,返回 YES, 则触摸点在我们需要判断的视图上;反之则不在。 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEv

iOS - 消息发送的完整流程

写在前面 在OC里面,调用对象的某个方法其实就是给这个对象发送一个消息,这个过程我们把它分为三大阶段,分别为:消息发送阶段、动态解析阶段、消息转发阶段,本文将细细剖析这三个阶段,但是在剖析这三大阶段之前我们需要先回顾一下Class的结构。 Class结构 苹果源码最新下载地址请点击:苹果源码 在objc-runtime-new.h中可以看到objc_class结构如下: struct objc_o

浅谈OC的编译时和运行时

编译时: 编译器对语言的编译阶段,对语言进行最基本的检查报错,包括词法分析、语法分析等等,将程序代码翻译成计算机能够识别的语言(例如汇编等),编译通过并不意味着程序就可以成功运行。 特点: 是静态阶段,类型错误很明显可以直接检查出来 运行时: 程序通过了编译后,编译好的代码被装载到内存中跑起来的阶段,这个时候会具体对类型进行检查,而不仅仅是对代码简单扫描分析,此时若出错,程序会崩溃。 特点: 是动

uni-app实现微信小程序横屏适配问题

1.小程序如何横屏 在手机上启用屏幕旋转支持 从小程序基础库版本 2.4.0 开始,小程序在手机上支持屏幕旋转。使小程序中的页面支持屏幕旋转的方法是:在 app.json 的 window 段中设置 "pageOrientation": "auto" ,或在页面 json 文件中配置 "pageOrientation": "auto" 。 以下是在单个页面 json 文件中启用屏幕旋转的示例。 代