![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
文章平均质量分 85
专注,才能走得更远
ideal树叶
这个作者很懒,什么都没留下…
展开
-
iOS15新特性、iOS15适配
一、iOS15新特性1.1、iOS15兼容的设备iPhone6S以上,包括SE第一/二代,iPod touch第七代具体6s、6sPlus、7、7Plus、8、8plus、X、XR、XsMax、Xs、11、11Pro、11ProMax、12、12Pro、12ProMax、12mini、13、13Pro、13ProMax、13mini1.2、iOS15新特性专注模式,就是确保用户在一个时间段里屏蔽各种骚扰、非必要的内容不看不听,来提升做其他事情的效率。苹果做了各种细致分类,能进行量身定制。原创 2021-09-26 16:35:47 · 3546 阅读 · 1 评论 -
iOS设置非系统自定义字体- 原生app自定义字体和H5自定义字体
一、App更改自定义字体按照常规方法更改即可(1).将字体文件放入工程(2).在info.plist中增加Fonts provided by application 数组类型,并将添加的字体文件添加(3).找到字体文件对应的具体的我们要用的字体名字let fontFamilies = UIFont.familyNamesfor fontFamily in fontFamilies { let fontNames = UIFont.fontNames(forFamilyName: fo..原创 2021-05-16 22:27:35 · 1158 阅读 · 0 评论 -
H5与iOS混编 之WKWebView与UIWebView用法区别
一、WebViewView比UIWebView的优点1.WK是iOS8以上推出,目前都是建议用WK2.WK将UIWebViewDelegate和UIWebView封装成了14个类和3个协议3.支持更多的H5特性4.高达60FPS的滚动刷帧率和内置手势5.性能、稳定性、功能都更好,加载网页占内存更少(比如模拟器加载百度占内存23M,只有UIWebView的1/4左右)6.允许JS的Nitro加载并使用二、UIWebView实现交互的方法和原理UIWebView实现H5与iOS混原创 2021-04-19 09:39:45 · 383 阅读 · 0 评论 -
内存管理 以及 OC中的属性关键字
1.定时器CADisplayLink、NSTimer会对target强引用,target又对它们强引用,就会引发循环引用解决方案block代理对象NSProxyNSTimer依赖于RunLoop,当RunLoop的任务过于繁重,会导致NSTimer不准时GCD定时器更准时2.内存布局:从低到高依次是保留、代码段.text(编译之后的代码)、数据段(字符串常量、已.data/未.bss初始化全局/静态变量等数据)、堆heap(通过a/m/calloc的等动态分配空间,分配的内存空间地址从低到高,原创 2021-01-06 22:27:27 · 228 阅读 · 0 评论 -
H5与iOS混编 之 JavaScriptCore 详解
一、浏览器历史浏览器器对于现代社会人来说再普通不过,可对它的历史了解的人却不多。 1990年 Berners-Lee 发明了 WorldWideWeb 浏览器,后改名 Nexus,在1991年公布了源码。 1993年 Marc Andreessen 的团队开发了 Mosaic,1994年推出我们熟悉的 Netscape Navigator 网景浏览器,同时成立了网景公司。 1995年微软推出了 Internet Explorer 浏览器,简称 IE,通过免费绑定进 Window原创 2021-03-22 13:45:31 · 450 阅读 · 0 评论 -
RunLoop底层原理
一、RunLoop介绍1.1概念:(关键字:运循 内维事循对事/消 管 对象)运行循环,程序运行过程中循环做一些事情。通过内部维护的事件循环对事件/消息进行管理的一个对象。1.1.2RunLoop休眠实现原理(关键字: 等消息 无线休 有唤醒 用户态->内核态 )等待消息,没有消息就让线程休眠,用户态到内核态切换;有消息就唤醒线程,处理事件,内核态到用户态切换。1.1.3main函数作为启动入口,顺着执行体代码以此执行,最后main函数退出,程序退出。main为什么能保持不退出原创 2021-03-03 13:57:15 · 761 阅读 · 0 评论 -
OC语言特性
一、分类1.1做了那些事?(关键词:明私、分解、私公开化)声明私有方法,分类头文件放到数组文件.m中,不对外暴露分解体积庞大的类文件 功能复杂的按功能分类framework私有方法公开化1.2特点 (关键词:运决议 系统类加)运行时决议 分类定义好后不立即加到数组类,而是runtime将分类中内容加到对应数组类(分类与扩展最大区别)能为系统类添加分类 如坐标获取,UI文件1.3可添加的内容?(关键字:实 类 协 属非实变)实例方法 类方法 协议 属性非实例变量 通过关联对原创 2021-02-23 22:52:43 · 217 阅读 · 0 评论 -
Block 本质、实现原理、内存管理、循环引用、__block等
一、Block介绍1.1概念:将函数及其执行上下文封装起来的对象 底层用struct实现1.2block实现原理:a .新建项目 代码放入file.m中 b.打开终端cd到项目目录下 c.敲clang -rewrite-objc file.m查看编译后的文件内容 本质是将OC重写为C后目录下多了个file.cpp文件1)Block实际上是OC对于闭包(闭包是一个函数或指向函数的指针,再加上该函数执行的外部的上下文变量。)的实现。OC是对C语言的扩展,block的实现是基于函数和指向函数的原创 2021-02-21 11:42:45 · 1581 阅读 · 0 评论 -
性能优化:启动优化、卡顿优化、耗电优化、安装包瘦身
性能优化:1.启动优化:冷启动(从零开始启动App)热启动(App已在内存,在后台存活着,再次点击图标启动App)添环境变量打印启动时间Edit scheme->Run->Arguments添DYLD_PRINT_STATISTICS设置为1若需更详细信息_DETAILS冷启动3个阶段:dyld runtime main(之前初始化 dyld主导将可执行文件加载到内存,加载依赖的动态库包括解析/绘制/重定位/绑定图片;runtime负责加载成objc定义的结构包括加载类/分类、属性/构造函原创 2020-12-30 22:16:34 · 272 阅读 · 0 评论 -
UIView相关总结
CALayer内部创建backingstore(CGContextRef) 一般在drawRect方法中可以通过上下文堆栈取出栈顶的Context,拿到当前视图或控件的上下文,然后该layer会判断是否有delegate,若无则调用[CALyer drawInContext:],若有调用[layer.delegate drawLayer:inContext:]做当前视图的绘制工作,这步发生在系统内部,在合适时机给予一个回调方法[UIView drawRect:],开这个口子允许做一些其他绘制工作;原创 2021-02-04 07:49:12 · 315 阅读 · 1 评论 -
设计模式、架构、框架
一、设计模式1.1概念:一套被反复使用、易理解、保证代码可靠性的代码设计经验的总结;与编程语言无关的成熟的编程思想。1.2六大设计原则:单一职责、开闭、接口隔离、依赖倒置、里氏替换、迪米特1.2.1单一职责原则:一个类只负责一件事。如UIView事件传递、响应;CALayer动画视图显示。1.2.2开闭原则:对修改关闭,对扩展开放。对类的成员变量定义避免反复改;对类的数据结构定义好后提供接口(包括子类继承)1.2.3接口隔离原则:用多个专门协议且协议中方法尽量少,避免一个臃肿庞大的协议。原创 2021-01-31 22:40:01 · 233 阅读 · 0 评论 -
网络概念与常见问题全解析(网络面试题 学会这篇 基本都能答上来)
Http协议Https与网络安全TCP/UDPDNS解析Session/Cookie原创 2021-01-15 16:21:53 · 425 阅读 · 0 评论 -
Runtime看这一篇就够了
1.数据结构 2.类 元类对象 3 消息传递 4.方法缓存 方法本质 SEL IMP5 消息转发 6 Method-Swizzling 7动态添加方法 8动态方法解析9.什么是,为什么用 10.[self class]与[super class]区别及原理 11. 12实例变量与类结构 13.weak在Runtime的底层实现 14.objc_msgForward 15.objc_msgSendAPILLVM的中间代码OC在变成机器代码前,会被LLVM编译器转换成中间代码。可用命令行cl..原创 2020-12-18 15:20:06 · 193 阅读 · 0 评论 -
iOS 多线程之加锁
开篇思考:1.什么是锁?2.为什么加锁?3.有哪几种锁?4.不同锁的使用场景?各自用法?5.不同锁的性能对比1.什么是?保护多线程并发执行安全的方式,避免多线程同时访问同一块资源而出现数据混乱,引发数据安全问题。如:读并改同一值而混乱2.为什么?解决多线程抢夺同一块资源问题3.哪几种?5.性能对比自旋锁 OSSPinLock 、atomic什么情况使用自旋锁?预计线程等待锁的时间很短,短到比线程切换上下文时长更短多核处理器加锁的代码(临界区)经常被调用,但竞争情况很...原创 2020-09-03 18:12:35 · 460 阅读 · 0 评论 -
H5与iOS混编之交互即跳转、调用方法、传值
WKWebView#import <JavaScriptCore/JavaScriptCore.h>OC给JS传值:本质是页面加载完成后即didFinishLoad后OC调用JS方法,传的值是JS方法的一个参数JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; [context setObject:self forKeyedSu..原创 2020-09-04 11:36:03 · 2127 阅读 · 0 评论 -
组件化开发及cocoapods详解
1.概念2.产生原因3.达到的效果4.如何划分组件5.原创 2020-08-04 22:50:44 · 228 阅读 · 0 评论