
苹果的机制
文章平均质量分 77
程序员的修养
好好学习
展开
-
渲染系列--图像渲染过程
图像渲染过程图像渲染大概经过了四个阶段,分别是应用处理阶段、几何处理阶段、光栅化阶段以及像素处理阶段,如下图所示,其中应用处理阶段CPU还在处理,CPU需要对图像进行操作和改变,将生成的图元信息交给GPC,之后其他阶段都是交由GPU处理。1、CPU处理的阶段也就是应用处理阶段:主要任务就是准备好场景数据,设置好渲染状态,然后输出图元图元是指渲染的基本图形,通俗来讲图元可以是顶点,线段,三角面等,复杂的图形可以通过渲染多个三角形来实现2、GPU负责处理的阶段GPU负责处理阶段包含几何处理阶段原创 2021-07-21 08:49:37 · 3447 阅读 · 0 评论 -
runloop
Runloop1、简介runloop本质是一个循环,保证保证线程不退出,实现了“闲”等待,有任务的时候唤醒线程处理任务,没任务的时候让线程休眠,它的工作模式如下图所示对于开发者来说,runloop是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数来执行循环逻辑,线程执行了这个函数后,就会一直处于这个函数内部 “接受消息->等待->处理” 的循环中,直到这个循环结束(比如传入 quit 的消息),函数返回。 正是因为这个内部循环iOS应用在main函数执行完之原创 2021-06-30 10:08:37 · 389 阅读 · 0 评论 -
iOS触摸事件
iOS触摸事件当指尖触碰屏幕的那一刻,一个触摸事件就在系统中生成了。经过IPC进程间通信,事件最终被传递到了合适的应用。在应用内历经峰回路转的奇幻之旅后,最终被释放。大致经过如下图:参考史上最详细的iOS之事件的传递和响应机制-原理篇Understanding Event Handling, Responders, and the Responder ChainiOS触摸事件的流动...转载 2021-06-23 17:07:24 · 146 阅读 · 0 评论 -
WidgetKit
WidgetKitiOS 14之后,需要添加添加widget extension,使用timeline provider配置widget,它会告诉WidgetKit去跟新widget的内容,使用SwiftUI展示widget的内容。为了使窗口小部件支持用户可配置,可以向扩展中添加自定义SiriKit意向定义,WidgetKit自动提供自定义界面,让用户自定义widget。一、创建Widget Extension1、添加widget target(1)添加步骤File–>new–>Tar原创 2020-10-26 16:25:03 · 1085 阅读 · 0 评论 -
HealthKit框架简介
HealthKit框架1、版本限制iOS8+,watchOS2.0+,Mac Catalyst 13.0+2、作用为iPhone和watch提供健康相关的数据,但是需要经过用户的授权,app才可以和HealthKit交互,获取或更新数据3、设计开发时注意需要经过用户授权,因为你HeathKit里面包含用户的敏感数据;用户可以添加、修改、删除某项数据,而且用户还可以设置某个数据源的访问权限,比如设置获取步数数据的app是否可以获取自己在health app里面的数据,所以在开发时需要考虑到这些情况原创 2020-10-14 14:54:58 · 1621 阅读 · 0 评论 -
push notification通知修改和分组
通知分组iOS12 引入了同住分组的概念,也就是可以将push分成不同的group,但是打开系统设置,进入通知设置中,我们可以看到通知分组下面有三种设置可供用户设置,分别是自动、按app、关,默认是自动。1、自动分组按照preload结构里面thread-id分group,相同thred-id的push叠加在一起,不同的thred-id按时间一次排列。(1)实现自动分组远程推送如果想为自己app的push设置group只需要在push的preload里面设置不同的thread-id即可。原创 2020-09-16 14:25:08 · 859 阅读 · 0 评论 -
UIApplication Delegate Messaging
逛博客的时候发现一个图,结合UIApplication Delegate方法,总结了ios应用的启动流程,保存下来大家一切研究哈~其中UIApplicationExitsOnSuspend用于设置应用程序是否支持后台运行通过UIApplicationExitsOnSuspend可以设置iOS的应用程序进入到挂起状态下是否立即退出,设置为YES表示不支持后台运行退出到后台立即退出,设置为NO表示支持后台运行。...原创 2020-08-18 17:34:46 · 168 阅读 · 0 评论 -
UDID、UUID、IDFV、IDFA
UDID、UUID、IDFV、IDFA1、UDID-废弃UDID全称为Unique Device Identifier Description,是一个40个字符串的序号,用来标示唯一的iOS设备。获取方式[[UIDevice currentDevice] uniqueIdentifier]; iOS 2.0版本以后UIDevice提供一个获取设备唯一标识符的方法uniqueIdentifier,通过该方法我们可以获取设备的序列号,这个也是目前为止唯一可以确认唯一的标示符。 许多开发原创 2020-07-20 08:55:50 · 4065 阅读 · 0 评论 -
app delegate的函数与使用时机
app delegate的函数与使用时机1、-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions 告诉代理进程启动但还没进入状态保存返回值说明:如果app不能处理的URL或者user activity,以及app不执行 ...原创 2019-01-05 16:37:03 · 456 阅读 · 1 评论 -
ios-坐标系统
ios-坐标系统 1)os以左上角为坐标原点(0,0),以原点向右侧为X轴正方向,原点下侧为Y轴正方向。ios采用CGPoint来表示点在坐标系上X、Y位置。我们可以通过CGPointMake(x,y)来创建一个坐标点。ios采用CGSize来表示视图的宽度和高度,即视图的大小。我们可以通过CGSizeMake(width,height)来创建一个矩形的大小, 2)frame、bounds和ce原创 2016-03-16 14:29:27 · 491 阅读 · 0 评论 -
bitcode
bitcode 1.原由 错误:An App ID with Identifier ‘com.domainName.AppName’ is not available. Please enter a different string. 解决:  原理:”Xcode 7 has a ENABLE_BITCODE option to embed bitcode in apps, app ex原创 2016-03-16 14:28:47 · 411 阅读 · 0 评论 -
常见的页面跳转的方法
1.//方法一presentViewController;例如 [self presentViewController:detail animated:YES completion:nil]; //self.window.rootViewController=[[ViewController alloc]init]; 2.//方法二UINavigation要求使用导航框架;例如:[sel原创 2016-03-01 17:10:26 · 960 阅读 · 0 评论 -
ARC
1.什么是ARC ARC(automatic reference counting ),自动引用计数;是新的LLVM3.0的新特性,开发者使用它,可以不用手动管理内存。 使用arc:在工程中使用arc,你可以正常编写代码,只是不使用retain,release和autorelease关键字(这是arc的基本原则)。因为当你开启arc时,编译器灰自动的在合适的地转载 2016-02-25 09:16:08 · 603 阅读 · 0 评论 -
iOS之事件的传递和响应机制-原理篇
前言:按照时间顺序,事件的生命周期是这样的: 事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的view、寻找最合适的view的底层实现、拦截事件的处理)->找到最合适的view后事件的处理(touches方法的重写,也就是事件的响应)其中重点和难点是: 1.如何寻找最合适的view 2.寻找最合适的view的底层实现(hitTest:withEvent:底层实现)(一转载 2017-03-03 16:19:53 · 610 阅读 · 0 评论 -
runtime基础、消息转发
runtime术语 1、Class、id#if !OBJC_TYPES_DEFINED/// An opaque type that represents an Objective-C class.typedef struct objc_class *Class;/// Represents an instance of a class.struct objc_object { Cl原创 2017-02-26 10:43:33 · 304 阅读 · 0 评论 -
runtime完成的功能举例
动态变量控制 在程序中,xiaoming的age是10,后来被runtime变成了20,来看看runtime是怎么做到的。1.动态获取XiaoMing类中的所有属性[当然包括私有] `Ivar *ivar = class_copyIvarList([self.xiaoming class], &count);` 2.遍历属性找到对应name字段 `const char *转载 2017-02-26 12:52:34 · 314 阅读 · 0 评论 -
iOS系统框架
iOS提供的许多可使用的框架,构成了iOS操作系统的层次结构,从上到下依次是:Cocoa Touch、MediaLayer、Core Services、Core OS 共四层。下图为iOS8.3系统的框架架构图。Cocoa Touch Layer,触摸层为应用基础提供的关键技术支持和用来搭建应用的外观。如NotificationCenter的本地通知和远程推送服务,iAd广告框架,GameKit游戏原创 2017-03-16 09:23:17 · 610 阅读 · 0 评论 -
NSRunLoop(2)
(转自http://www.cnblogs.com/pengyingh/articles/2343920.html) NSRunLoop是一种更好的消息处理模式,他好在对消息处理过程进行了抽象和封装,使你不用处理一些很琐碎很低层次的具体消息,在NSRunLoop中每一个消息就被打包在input source或者是timer source中了。 1.什么是NSRunLoop我们会经常看到这样的代码转载 2016-05-02 08:46:24 · 397 阅读 · 0 评论 -
Event Delivery: The Responder Chain
一个事件都经历一个特殊的流程直到它被传给一个对象进行处理。首先,单例UIApplication对象从事件队列的顶部取出事件,并未处理它而进行分配。典型的是,UIApplication将事件送给window object(手机屏幕),window object将事件传给初始化对象进行处理,初始化对象决定了事件的类型。 事件类型分类: Touch events(触屏事件):window o原创 2016-03-21 09:45:01 · 373 阅读 · 0 评论 -
UIControl介绍以及Target-Action机制
一、UIControl的介绍 UIControl是控件类的基类,它是一个抽象基类,我们不能直接使用UIControl类来实例化控件,它只是为控件子类定义一些通用的接口,并提供一些基础实现,以在事件发生时,预处理这些消息并将它们发送到指定目标对象上。 (1)它的子类有UIButton(按钮)、UIDatePicker(时间/日期选择器)、UIPageControl(分页控件)、UISegmente原创 2017-03-26 11:07:48 · 1820 阅读 · 0 评论 -
iOS后台模式以及后台持续运行
一、iOS后台的几种模式 1、Background Audio,这是后台的音频,这个很早之前便有,也是iOS设备中用得最多的后台应用,调用这个接口可以实现后台的音乐播放。 2、Location Services,这是后台的定位,系统会拥有统一页面进行管理。 3、VoIP,后台语音服务,类似Skype通话应用需要调用,可进行后台的语音通话。 4、Newsstand,报刊杂志后台自动下载更新,其能够自原创 2016-07-09 13:49:54 · 9366 阅读 · 0 评论