苹果发布新的 Swift Server 框架:Swift Cluster Membership,这次的目标是集群

苹果发布新的 Swift Server 框架:Swift Cluster Membership,这次的目标是集群
很高兴为大家带来一个 Swift Server 生态系统新的开源项目 Swift Cluster Membership。这个库旨在促进 Swift 在服务端领域的发展:集群化多节点分布式系统。在这个库中,我们提供了可重用的,与运行时无关的成员协议实现,可以在各种集群中使用。 背景 集群成员协议是分布式系统的关键构建块(例如计算密集型集群,调度程序,数据库,键值存储等)。发布这个软件包,我们的目标是使此类系统的构建更...

GCD梳理与总结(一)队列、任务、执行任务的方式

GCD梳理与总结(一)队列、任务、执行任务的方式
GCD是iOS开发中常用的多线程技术,具有以下优点 可用于多核的并行运算。会自动利用更多的 CPU 内核。GCD 会自动管理线程的生命周期(创建线程、调度任务、销毁线程)。 但是由于其知识点细碎,API繁多,所以笔者决定抽空以写博客的方式对GCD进行梳理,总结,归纳和再学习。 首先我们来谈谈几个基本概念 任务 任务就是要执行的操作,也就是你在线程中执行的那段代码。在 GCD 中是放在 block...

SDWebImage的缓存策略

SDWebImage的缓存策略
**首先,SDWebImage 的图片缓存采用的是 Memory(内存) 和 Disk(硬盘) 双重 Cache 机制,SDImageCache 中有一个叫做 memCache 的属性,它是一个 NSCache 对象,用于实现我们对图片的 Memory Cache,其实就是接受系统的内存警告通知,然后清除掉自身的图片缓存。Disk Cache,也就是文件缓存,SDWebImage 会将图片存放到 NSCachesDirectory 目录中,然后为每一个缓存文件生成一个 md5 文件名, 存放到文件中。...

GCD梳理与总结(二)常用API操练

GCD梳理与总结(二)常用API操练
延时执行(dispatch_after) 需要注意的是:dispatch_after函数并不是在指定时间之后才开始执行处理,而是在指定时间之后将任务追加到队列中。严格来说,这个时间并不是绝对准确的,但想要大致延迟执行任务,dispatch_after函数是很有效。dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 2秒后异步追加任务代码到主队列 N...

花十分钟的时间武装你的代码库

花十分钟的时间武装你的代码库
当我们的代码库有很多人维护时,经常会出现代码风格不一致或者代码质量不过关,提交信息杂乱的情况,当然啦,即使是一个人的代码库,有的时候,自己写代码时不太注意细节,也会出现风格不一致的情况。 本文正是为了解决这个问题而生,阅读本篇文章并不需要很长时间,如果你的代码库还没有进行这些配置,正是你大展身手的好时机,武装一下你的代码库。 1. 规范 commit 信息 首先,看下 angular 的...

AutoLayout约束的使用

AutoLayout约束的使用
概述 在iOS 6之前,可以使用UIView的autoresizingMask属性进行自动适配,autoresizingMask是个枚举UIViewAutoresizing 。 typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 << 0, UIViewAutoresizingFlexibleWidth = 1 << 1, UIViewAutoresizingFlexibleRightMa...

iOS 14-WidgetKit

iOS 14-WidgetKit
Widget 就像一个迷你版的 App,可以快速访问它所提供的信息—比如天气、日历事件、笔记等。Widget 还可以充当“快捷方式”,点击它会立即跳转到 App 的指定位置。 介绍 WidgetKit 通过在 iOS 主屏幕或 macOS 通知中心放置小部件,让用户可以随时访问 App 中的内容。Widget 可以保持更新,从而让用户获得最新信息。当需要更多细节时,Widget 会直接带到 App 中的适当位置。Widget 有三种不同的尺寸(小...

iOS开发–探究iOS线程调用栈及符号化

iOS开发–探究iOS线程调用栈及符号化
探究iOS线程调用栈及符号化 概念 调用栈,也称为执行栈、控制栈、运行时栈与机器栈,是计算机科学中存储运行子程序的重要的数据结构,主要存放返回地址、本地变量、参数及环境传递,用于跟踪每个活动的子例程在完成执行后应该返回控制的点。 一个线程的调用栈如上图所示,它分为若干栈帧(frame),每个栈帧对应一个函数调用,如蓝色部分是DrawSquare函数的栈帧,它在运行过程中调用了DrawLine...

Swift 分包发送蓝牙数据

Swift 分包发送蓝牙数据
//分包发送蓝牙数据 是蓝牙单次可处理最大字节长度 let BLE_SEND_MAX_LEN = 20; func sendMsgWithSubPackage(msgData:NSData) { for i in stride(from: 0, to: msgData.count, by: BLE_SEND_MAX_LEN) { // 预加 最大包长度,如果依然小于总数据长度,可以取最大包数据大小 if ((i + BLE_SEND_MAX_LEN) < msgData.count) { let rangeStr = NSString(format: "%i,%i"...

iOS面试题1:思享无限

iOS面试题1:思享无限
面试题一:runtime中,SEL、Method 和 IMP有什么区别,使用场景? 答:它们之间的关系可以这么解释:一个类(Class)持有一个分发表,在运行期分发消息,表中的每一个实体代表一个方法(Method),它的名字叫做选择子(SEL),对应着一种方法实现(IMP)。具体的分析如下SEL:定义:typedef struct objc_selector *SEL,代表方法的名称。仅以名字来识别。翻译成中文叫做选择子或者选择器,选择子代表方法...
Copyright © ios教程,苹果粉丝,苹果资讯,ios入门教程,ios学习,ios程序员,ios视频教程,ios粉丝网 保留所有权利.   Theme  Ality

用户登录