移动开发

浅谈OC的编译时和运行时

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

IOS之二进制重拍

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

Flutter PopupMenuButton 详解

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

设计模式之装饰器模式

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

iOS-button响应流程

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

解密网页奥秘!Mac Safari 启用“显示网页开发者功能”超详细教程(Option (⌥) + Command (⌘) + I)

解密网页奥秘!Mac Safari 启用“显示网页开发者功能”超详细教程想知道那些炫酷的网页效果是怎么实现的吗?想一探网站背后的代码世界吗?Safari 浏览器为你准备了一把“金钥匙”——“显示网页开发者功能”,让你轻松打开网页的“源代码”大门,探索网页设计的奥秘。这篇教程将用最清晰的步骤,教你如何在 Mac 上的

iOS 高级面试题--答案

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

【Android笔记】Android 自定义 TextView 实现垂直渐变字体颜色(支持 XML 配置)

Android 自定义 TextView 实现垂直渐变字体颜色(支持 XML 配置) 在 Android UI 设计中,字体颜色的渐变效果能让界面看起来更加精致与现代。常见的渐变有从左到右、从上到下等方向,但 Android 的 TextView 默认并不支持垂直渐变。本文将带你从原理到实现,一步步完成一个支持 上到下颜色渐变

Opengl ES之EGL

前言 前面我们发布了一系列的入门教程,例如C++系列的指针扫盲、多线程的使用等,JNI入门系列,ffmpeg入门系列等,有感兴趣的童鞋们可以关注往回自行查阅。 今天我们的主题依然是音视频开发的范畴,做过音视频开发的都知道Opengl也是音视频开发中的一项重要技能,特别是涉及到视频录制、特效处理、画质渲染细分功能。因此后续笔者打算再出一系列的Opengl ES的学习笔记, 希望能与大家共同温故知新。