
ios技术开发
奔波在外的程序猿
这个作者很懒,什么都没留下…
展开
-
调试抖音App(教程)
一、准备工作1)下载砸过壳的抖音IPA2)MonkeyDev环境3)class_dump二、使用MonkeyDev建立空的工程,拖入IPA到目标文件夹中1)启动Xcode进行编译执行一起动就crash,说明签名校验已经通过。1LLVM Profile Error: Failed to write file “default.profraw”: Operation not permitted 遇到上面的错误,经过查询说是,抖音App内部通过ptrace判断是否有调试器挂载,判断反调试的功能原创 2020-06-11 16:09:20 · 3711 阅读 · 1 评论 -
iOS中Runtime的几种基本用法
Runtime 介绍这不是一遍介绍关于Runtime实现细节的文章,而是怎么利用Objective-C提供的Runtime API进行开发的文章!Objective-C拥有相当多的动态特性,这些特性在运行程序时候发挥作用.Objctive-C Runtime是个运行时的库,由C和汇编实现。通过Runtime封装的C结构体和函数可以在程序运行时创建、检查和修改类以及对象及其方法,甚至可以替换或交换方法的实现。下面记录一下关于Runtime的一些基本用法1)消息机制在OOP术语中,消息传递是指一种在原创 2020-06-10 16:20:06 · 420 阅读 · 0 评论 -
先来看看2020年十大最热门iOS项目吧
因受疫情的影响,苹果公司正式宣布将一年一度的全球开发者大会(WWDC)转移到线上,这也是33年来首次以线上的形式与大家见面,想必会有与以往全然不同的体验。在耐心等待发布iOS 14新功能的同时,2020年一季度发布的iOS项目中,也有一些绝对不能错过。从ARKit到SwiftUI,酷炫的想法,超棒的服务层出不穷。来看看十大热门iOS项目,一定会给你很多启发。1.ALBusSeatView这个iOS库基于Swift,可以为公交座位选择配置一个自定义视图,应用于旅行预订应用程序是个不错的想法,它使得座位原创 2020-06-10 16:08:17 · 955 阅读 · 0 评论 -
iOS开发高级技术面试题
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?答: Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。2. #import 跟#include 又什么区别,@class呢, #import<> 跟 #import””又什么区别?原创 2020-06-10 14:20:56 · 445 阅读 · 0 评论 -
2020大厂常问题
Runloop & KVOrunloop1.app如何接收到触摸事件的2.为什么只有主线程的runloop是开启的3.为什么只在主线程刷新UI4.PerformSelector和runloop的关系如何使线程保活KVO实现原理1.如何手动关闭kvo2.通过KVC修改属性会触发KVO么3.哪些情况下使用kvo会崩溃,怎么防护崩溃4.kvo的优缺点5.runtime相关问题结构模型1.介绍下runtime的内存模型(isa、对象、类、metaclass、结构体的存储信息等)原创 2020-06-08 16:09:34 · 1206 阅读 · 0 评论 -
详细了解git
今天来分享一点有价值的东西(git)一、简介什么是git?git是一款开源的分布式版本控制工具在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的git的起源作者是Linux之父:Linus Benedict Torvalds当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)git的现状在国外已经非常普及,国内并未普及(在慢慢普及)越来越多的开源项目已经转移到git二、SVN 和 Git 对比速度在很多情况下,git的速度远远比SVN快结构SVN是集中原创 2020-06-06 14:44:33 · 621 阅读 · 0 评论 -
iOS开发以来的经验
前言我现在已经29岁 ,做iOS开发已经快5年了,很多朋友问我为什么工资那么高 ,技术那么好,是文凭吗? 是技术吗? 是你在同一个公司做了多久吗? 今天我来说一下啊 ,不是,想进大厂是可以的 那你怎样才能进大厂呢? 要靠时间积累 并不是每个人都能进的,就靠时间积累嘛 ?不是, 你也得有强硬的技术。学iOS刚出来的时候当初我自己也是跟你们一样,刚出来的时候就想着去大厂, 我去面试了阿里,美团,没人要, 我后面就在小厂先做着, 做了2年,在这两年里我不是只在帮公司做业务,那个时候我们上班是965,有时候忙原创 2020-06-05 19:20:26 · 274 阅读 · 0 评论 -
用Flutter重构斗鱼APP(精彩)
Github源码仓库:dy_flutterflutter重构的斗鱼直播APP基于Material原生Widget开发,外加各类优质的第三方开源库,打造出优于原生APP的用户体验尽可能接入更多功能,帮助你在使用flutter进行开发新的应用提供实用的借鉴案例包含功能:启动页广告位开播列表上拉加载、下拉刷新、返回顶部列表图片缓存加载优化渐进式头部动画底部导航切换保存页面状态HTTP缓存、IO缓存直播间webSocket消息弹幕、礼物页面路由传值Bloc全局状态管理(启动页预加载首页数据原创 2020-06-05 15:43:00 · 682 阅读 · 1 评论 -
用iOS实现小视频的缓存
一套基于AVPLayer短视频播放缓存库ShortMediaCache GitHub地址。主要特点:1.为短视频量身设计,接入方便,不侵占业务2.边播变缓存,缓存后直接播放3.预加载功能,秒播下一条短视频4.自动缓存管理业务背景公司电商APP接入短视频模块也有半年多的时间了,之间一直在忙着完善业务功能,现在是时候沉淀下来总结这一路来的收获。视频播放对于ios开发来说其实并不是一个难事儿,简单几行代码就能实现,确实,最初的短视频播放也是基于此,给定视频url直接丢给系统播放器(AVPlayer原创 2020-06-05 14:16:32 · 1602 阅读 · 0 评论 -
在 iOS 与 Android 上实现 React Native 应用深度链接,通过 URL 打开到指定页面
在 iOS 与 Android 上实现 React Native 应用深度链接,使得应用可以通过我们生活在一个万物兼可分享的年代,而分享的过程,几乎最终都会分享某一个链接,那么,作为开发者,最常遇到的问题中应该包括如何通过一个URL地址快速的打开App,并导航至特定的页面。什么是深度链接(Deep Link)深度链接是一项可以让一个App通过一个URL地址打开,之后导航至特定页面或者资源,或者展示特定UI的技术,Deep 的意思是指被打开的页面或者资源并不是App的首页,最常使用到的地方包括但远远不限转载 2020-06-04 16:16:45 · 987 阅读 · 1 评论 -
你们要的路由组件
组件化和路由路由的实现客户端的使用一些小想法使用组件化是为了解耦处理,多个模块之间通过协议进行交互。而负责解析协议,找到目的控制器,或者是返回对象给调用者的这个组件就是路由组件。本文讲解如何使用核心的50行代码实现一个路由组件。组件化和路由之前看过挺多的关于路由管理、路由处理的文章,常常会和组件化出现在一起,一开始不知道为何路由和组件化出现在一起,后来公司的项目中使用了路由组件(他本身也是一个组件,确切的说是一个中间人或者中介者),才突然想明白了,原来如此。使用组件化是为了解耦处理,多个模块之原创 2020-06-03 13:51:16 · 290 阅读 · 0 评论 -
iOS Git的使用
Git与SVN的优势:1.强大的分支管理2.适合大规模开发如何将本地项目提交Git管理1.进入项目目录$ cd /Users/lx/Desktop/xxx2.创建git文件$ git init3.设置名字和邮箱,以便在多人开发环境区分提交人, global为全局 local为本次$ git config --global user.name “xxx”$ git config --global user.email “xxxx@163.com”$ git config --list原创 2020-06-02 14:40:25 · 586 阅读 · 0 评论 -
iOS内存管理和布局方案
苹果设备备受欢迎的背后离不开iOS优秀的内存管理机制,那iOS的内存布局及管理方案是怎样的呢?我们一起研究下。内存管理分为五大块栈区(stack):线性结构,内存连续,系统自己管理内存,程序运行记录,每个线程,也就是每个执行序列各有一个(看crash log最容易理解),都是编译的时候能确定好的,还有一个特点就是这里面的数据可以不用指针,也不会丢。堆区(heap):链式结构,内存不连续,最灵活的内存区,用途多多,动态分配和释放,编译时不能提前确定,我们的Objective-C对象都是这么来的,都存.原创 2020-06-01 15:41:54 · 330 阅读 · 0 评论 -
开源!用Flutter撸了个新浪微博
开源最前线(ID:OpenSourceTop) 猿妹综合整理项目地址:https://github.com/huangruiLearn/flutter_hrlweibo谷歌在2018年12月正式发布了Flutter,这是一个出色的跨平台框架,可用于移动、桌面和 Web 平台构建应用程序,发布不到一年,它的流行度就超过了React Native以及同领域的产品。从下图就可以看出:相比其他选项,Flutter有着许多独有的优势。这些优势融入了基础语言和SDK的设计中,以解决其他技术的常见问题和缺陷,简单原创 2020-05-30 15:41:34 · 636 阅读 · 0 评论 -
Flutter 插件开发:以微信SDK为例
就像 React Native 一样,在 Flutter 应用中,如果需要调用第三方库的方法或者有一些功能需要使用原生的开发来提供,使用 Flutter Plugin 是一种不错的方式,它本质上就是一个 Dart Package,但与其它的 package 不同点在于,Flutter 插件中一般都存在两个特殊的文件夹:android 与 ios,如果需要编写Java、Kotlin或者 Object-C 以及 Swift 代码,我们就需要在这两个文件夹项目中进行,然后通过相应的方法将原生代码中开发的方法映射到原创 2020-05-29 14:01:58 · 592 阅读 · 0 评论 -
小试 Xcode 逆向:App 内存监控原理初探(逆向技术必看)
前言最近看到公司同事的《iOS内存那些事》系列文章,其中的一篇文章讲了他在研究WebKit中内存管理的时候,发现可以用phys_footprint来衡量内存,其结果和xcode debug显示的值基本一致。文章通读下来,收获颇丰~回味之余,突然脑洞了一下,为啥不直接逆向一下Xcode,学习一下xcode debug app时它是怎么实现内存监控的?刚好最近在自学逆向知识,顺便也来练练手~动手实践准备一个小项目运行一下,我们可以在debug面板看到memory report信息lldb和hoppe原创 2020-05-28 14:25:26 · 536 阅读 · 0 评论 -
使用 protocol 和 callAsFunction 改进 Delegate指针
2018 年 3 月的时候我写过一篇在 Swift 中如何改进 Delegate Pattern 的文章,主要思想是用遮蔽变量 (shadow variable) 声明的方式,来保证 self 变量可以被常时地标记为 weak。本文中,为了保证没有看过原文的读者能处在同一频道,我会先 (再次) 简单介绍一下这种方法。然后,结合 Swift 5.2 的新特性提出一些小的改进方式。Delegate简单说,为了避免繁琐老式的 protocol 定义和实现,我们可能更倾向于选择提供闭包的方式完成回调。比如在一个原创 2020-05-27 13:58:48 · 254 阅读 · 0 评论 -
iOS - 启动优化之Clang插桩实现二进制重排
####请大家认真看完前言自从抖音团队分享了这篇 抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15% 启动优化文章后 , 二进制重排优化 pre-main 阶段的启动时间自此被大家广为流传 .本篇文章首先讲述下二进制重排的原理 , ( 因为抖音团队在上述文章中原理部分大多是点到即止 , 多数朋友看完并没有什么实际收获 ) . 然后将结合 clang 插桩的方式 来实际讲述和演练一下如何解决抖音团队遗留下来的这一问题 :hook Objc_msgSend 无法解决的 纯s原创 2020-05-26 18:56:15 · 2039 阅读 · 2 评论 -
使用React Native构建一个App软件
运行react-native init project-name,进入project-name文件夹安装依赖npm i并运行react-native run-android或react-native run-ios构建App。以Android App为例,在Android Studio打开Android文件夹(注意:此处是Android文件夹,不是project-name项目文件夹)。在C:\Users\user\.gradle\wrapper\dists目录下放入对应文件,文件下载地址Gradle.原创 2020-05-26 14:38:39 · 333 阅读 · 0 评论 -
来教大家如何在Flutter 中玩转 Objective-C Block
dart_native 作为一条比 Channel 性能更高开发成本更低的超级通道,通过 C++ 调用 Native 的 API,深入底层且考虑全面。很多 Objective-C 接口的参数和返回值是 Block,所以这就需要支持用 Dart 语言创建和调用 Objective-C Block。Dart 调用 Objective-C 带 Block 的 APIDart 语言支持协程,这样就无需传递闭包来作为异步调用的回调。而 Objective-C 大量 API 都使用 Block 作为回调,当 Dar原创 2020-05-25 18:45:51 · 552 阅读 · 0 评论 -
iOS该怎样提高自己能力(程序员必看)
iOS这几年的转换几年间移动互联网的飞速发展以及互联网创业的大潮来袭,使得 iOS 开发一职位炙手可热。由于前几年 iOS 开发的稀缺以及自学门槛相对其他技术高(需要 Mac 和 iPhone),加之创业公司大都以移动端产品作为入口,iOS 开发的薪资也水涨船高。相比其他开发岗位,iOS 开发一职缺口大,薪资高,同时千金难求。培训行业瞄准了时机大力鼓动高校生参加 iOS 开发培训(也不乏一部分其他行业人员进入,非计算机专业的学生更是居多)。培训机构基本上是填鸭式教学,进行简单的 C 语言教学,然后 Obj原创 2020-05-25 16:32:10 · 421 阅读 · 0 评论 -
WebSocket 双端实践(iOS/ Golang)
一、使用Starscream(swift)完成客户端长链需求首先附上Starscream:GitHub地址第一步:将Starsream导入到项目。打开Podfile,加上:pod ‘Starscream’, '~> 4.0.0’复制代码接着pod install。第二步:实现WebSocket能力。导入头文件,import Starscream初始化WebSocket,把一些请求头包装一下(与服务端对好)private func initWebSocket() {// 包装请求头原创 2020-05-25 15:41:50 · 692 阅读 · 0 评论 -
今日头条 字节跳动 Flutter架构实践
今日头条 字节跳动 Flutter架构实践1移动跨平台技术探究◆ 为什么需要跨平台?今日头条 字节跳动 Flutter架构实践◆ 跨平台技术是如何发展起来的?今日头条 字节跳动 Flutter架构实践◆ 跨平台技术选型有哪些?今日头条 字节跳动 Flutter架构实践◆ Flutter有什么独特优势(为什么选择Flutter)?今日头条 字节跳动 Flutter架构实践◆ 为什么说Flutter是高性能的,体现在哪里?今日头条 字节跳动 Flutter架构实践2Flut原创 2020-05-25 15:19:32 · 1470 阅读 · 0 评论 -
【整理之路二】百度地图的路径规划和调用本机地图导航
推荐看完之后注意一下最后的东西一、细说百度地图的路径规划路径规划主要有这么几种1.公交路径规划1.1 市内公交规划(暂时不在这里说)1.2 跨市/省公交规划 // 导入头文件 #import <BaiduMapAPI_Search/BMKSearchComponent.h> #import <BaiduMapAPI_Map/BMKPolylineView.h> #import <BaiduMapAPI_Utils/BMKGeometry原创 2020-05-25 14:29:14 · 1369 阅读 · 0 评论 -
腾讯开源内部跨端框架 Hippy,打磨三年,日均 PV 过亿
12月20日,腾讯开源跨端框架 Hippy。 在腾讯内部,Hippy 已运行3年之久,跨 BG 共有 18 款线上业务正在使用 Hippy,日均 PV 过亿,且已建立一套完整生态。相较于其他跨端框架,Hippy 对前端开发者更友好:紧贴 W3C 标准,遵从网页开发各项规则,使用 JavaScript 为开发语言,同时支持 React 和 Vue 两种前端主流框架。业内现状:大部分跨端框架对前端开发者不够友好“跨端”是目前前端界比较流行的一个词汇。“跨端”之所以流行,根源在于传统网页开发受浏览器能力限制太原创 2020-05-23 18:47:56 · 823 阅读 · 0 评论 -
Flutter 10天高仿大厂App及小技巧积累总结
以下博文会分为3个部分概述:项目结构分析项目功能详细概述(所用知识点)小技巧积累总结项目结构分析其次,梳理下项目的目录结构,理解每个文件都是干什么的,我们先来看看一级目录,如下:├── README.md # 描述文件├── android # android 宿主环境├── build # 项目构建目录,由flutter自动完成├── flutter_ctrip.iml├── fonts # 自己创建的目录,用于存放字体├── images # 自原创 2020-05-23 14:58:44 · 555 阅读 · 0 评论 -
最新iOS大厂面试题大全
1. ARC帮我们做了什么?使用LVVM + Runtime 结合帮我管理对象的生命周期LVVM 帮我们在代码合适的地方添加release、retarn、autorelease等添加计数器或者减少计数器操作Runtime 帮我们像__weak、copy等关键字的操作2.initialize和load是如何调用的?它们会多次调用吗?load方法说在应用加载的时候,Runtime直接拿到load的IMP直接去调用的,而不是像其他方式根据objc_msgSend(消息机制)来调用方法的load_ima原创 2020-05-22 16:19:17 · 1128 阅读 · 0 评论 -
Flutter中 EasyLoading - 让全局Toast或Loading更简单
前言Flutter是Google在2017年推出的一套开源跨平台UI框架,可以快速地在iOS、Android和Web平台上构建高质量的原生用户界面。Flutter发布至今,不可谓不说是大受追捧,吸引了大批App原生开发者、Web开发者前赴后继的投入其怀抱,也正由于Flutter是跨平台领域的新星,总的来说,其生态目前还不是十分完善,我相信对于习惯了原生开发的同学们来说,找轮子肯定没有了那种章手就莱的感觉。比如说这篇文章即将讲到的,如何在Flutter应用内简单、方便的展示Toast或者Loading框呢?原创 2020-05-22 15:10:49 · 3345 阅读 · 0 评论 -
【Flutter应用】Flutter精仿抖音开源
flutter_tiktokFlutter精仿抖音开源了,左滑搜索,右滑个人中心,上下滑动刷视频,双击点赞冒爱心,无敌精仿,感谢点Star。应用截图实现功能上下刷视频,视频会自动加载封面左右滑动去搜索与个人中心双击冒爱心点赞看评论切换底部Tabbar因为技术大家聚在一堂 因为交流才会帮助我们解决很多问题 这是一个我的iOS交流群:651612063 进群密码111,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!项目结构依赖:加载原创 2020-05-22 13:43:04 · 1554 阅读 · 1 评论 -
Flutter学习指南App,大家可以来玩玩
Flutter是谷歌的移动UI框架,可以快速在iOS、Android、Web和PC上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。同时它也是构建未来的Google Fuchsia应用的主要方式。从事移动开发这么多年, 各种跨平台技术层出不穷.从最初的基于web的phonegap/cordova到后来的原生组件渲染react-native/weex,再到现在的flutter通过自己开发了一套原创 2020-05-21 16:38:13 · 541 阅读 · 0 评论 -
抓包工具Charles的使用心得
简介Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。开发iOS都在Mac系统上吧,安装Charles的时候要先装好Java环境。这么好的软件不是免费的,官网要好几十刀呢,我这里有一个Mac上的破解版,点击这里下载,当然不是最新版的。如果你想体验最新版,Charles是提供试用的。Charles主要功能支持SSL代理。可以截取分析SSL的请求。支持流量控制。可以模拟慢速原创 2020-05-21 14:41:59 · 301 阅读 · 0 评论 -
做了4年iOS开发 凭着这个面试题 我从10K到20K
1、NSArray与NSSet的区别?NSArray内存中存储地址连续,而NSSet不连续NSSet效率高,内部使用hash查找;NSArray查找需要遍历NSSet通过anyObject访问元素,NSArray通过下标访问2、NSHashTable与NSMapTable?NSHashTable是NSSet的通用版本,对元素弱引用,可变类型;可以在访问成员时copyNSMapTable是NSDictionary的通用版本,对元素弱引用,可变类型;可以在访问成员时copy(注:NSHashTab原创 2020-05-21 14:01:53 · 2606 阅读 · 0 评论 -
iOS制作暗黑模式教程
0、前言随着iOS13的普及,大多数的APP都已经适配了暗黑模式,网络上关于暗黑模式适配的文章也很多,基本看几篇就能解决掉iOS13暗黑模式的适配。我看了大部分的文章,基本都是对暗黑模式通用的介绍和适配,一些实际项目中的具体细节却很少提及,所以此篇文章算是对于其他暗黑模式适配的补充,力求能做到完美适配暗黑模式。PS:如果你没看过其他的暗黑模式适配文章,那么你在看此文章前需要先去看一下其他关于暗黑模式适配的文章,此文章默认你是已经知道暗黑模式需要怎么适配了的。1、LaunchScreen.storyboa原创 2020-05-20 14:31:17 · 1052 阅读 · 0 评论 -
三种项目中很常见的提示小弹窗
我们在开发项目的时候,可能会遇到各种样式的弹窗,并且每个项目的弹窗样式都会千差万别。但是不管他们的样式再怎么变化,只要我们掌握了核心的自定义弹窗方法,那么我们都会很快就能实现这些样式的弹窗的。今天的主要内容是实现在项目中三种比较常见的提示信息的小弹窗。 效果图如下:Simulator Screen Shot - iPhone 11 Pro Max - 2020-04-29 at 12.28.30.pngSimulator Screen Shot - iPhone 11 Pro Max - 2020-.原创 2020-05-20 13:44:27 · 539 阅读 · 0 评论 -
Swift5 + MVVM + 文艺复兴微博(纯代码)
背景: 现在越来越多的公司会尝试用 Swift 做 native 的开发了,很多之前习惯用 Objective-C 的开发,有新项目启动的时候,也会想说用 Swift 试试。如果从 2020年编程语言排行榜 上看的话,Swift的热度也领先 Objective-C 10个身位了。而我们现在公司所做的项目,也是用 Swift 开发的,虽然说之前有些 OC 基础,写起 Swift 功能也是能实现,但是代码不是很优雅,不够 ‘Swift Style’。 熟练度不够的话,很多 Swift 的高级原创 2020-05-19 15:21:30 · 649 阅读 · 0 评论 -
Dart+Flutter聊天实例|flutter仿微信界面聊天应用
Flutter 是 Google 开源的 UI 框架,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。 相比较目前的混合开发方案,Flutter 提供了大量的文档,能非常快速且友好的让你加入到这个大家庭,针对移动端,Flutter 提供了符合 Android 风格的 Material 和符合 iOS 风格的 Cupertino,同时对不同平台也做了不同的兼容。 感兴趣的同学可以关注 GitHub:https://github.com/flutter/flutter今天原创 2020-05-19 13:55:45 · 2144 阅读 · 0 评论 -
iOS的UI组件
我也是一个ios的技术人员最近有时间的时候把iOS里的UI组件重新整理了一遍,简单来看一下常用的组件以及它们的实现。其实现在这些组件都可以通过Storyboard很快的生成,只是要向这些组件能够变得生动起来并且赋予它们更具生命力的事件,还是需要一番功夫的。UIButton这个就不多说了,对照文档可以更多的去学习。所以在学习这些组件的时候最好的方式还是通过文档,虽然已开始可能有些困难,但是硬着头皮去啃,就一定会有悟道的那一天。建议有问题先去看文档,如果实在不行再去Google啊,Stack Overfl原创 2020-05-18 16:04:30 · 545 阅读 · 0 评论 -
iOS性能优化内容
先来谈谈CPU和GPU在屏幕成像的过程中,CPU和GPU起着至关重要的作用CPU( Central Processing Unit, 中央处理器)就是机器的“大脑”,也是布局谋略、发号施令、控制行动的“总司令官”。CPU的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通 讯的数据、控制及状态的总线。GPU全称为Graphics Processing Un原创 2020-05-18 15:54:47 · 233 阅读 · 0 评论 -
通用的App都会有哪些运行状态
状态:未运行,未激活,激活,后台,挂着。未运行:程序未启动未激活:程序在前台运行,不过没有接受到事件。激活:程序在前台运行且受到了事件。后台:程序在后台而且能执行代码,大多程序进入这个状态后会在这个状态停留一会,时间到之后会进入挂起状态。挂起:程序在后台不能执行代码。系统会自动把程序变成这个状态而且不会发出通知。当挂起时,程序还是停留在内存中,系统内存低时,系统就把挂起的程序清除掉。各个程序运行状态时代理的回调:(BOOL)application:(UIApplication *)appl原创 2020-05-18 14:18:36 · 692 阅读 · 1 评论 -
KVO 实现观察者模式
前言在 iOS 开发中,常常需要在不同的对象、不同的视图(View)或不同的视图控制器(ViewController)之间通信,传递数据。主要的实现方法有: * 直接通过 superView 或 subView 传递数据,或者在类中添加其他对象的引用。方法直接但效率低、容易使代码混乱,难以处理复杂的关系。 * 通过自带的或自定义的delegate协议通信。效率较高,能完成复杂的通信及执行复杂的操作,代码结构较好,但是代码量比较大。 * 使用 KVO(Key-va.原创 2020-05-16 18:38:50 · 407 阅读 · 0 评论