首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift 周报 第三十八期

不小心将自己锁定在特定错误类型,然后主要版本发布后后悔可能性不是语言问题,而是工程无能问题。作者应该采取预防措施,设计错误类型时考虑到未来扩展(例如,具有可选元数据结构而不是裸枚举)。...与此同时,使用命令行开发工具对 Linux 和 Swift 支持其他平台进行交叉编译并不那么容易设置。... Swift使用 BSD 套接字感觉就像我该语言作斗争:很多都陷入了 UnsafePointer 领域。...通过单个通道读取处理程序( Swift-NIO 情况下)感觉所有内容, 再次,就像我做错事一样。 有谁知道 Swift-NIO 类似的来回通信示例吗?或者我看错了方向?...然而,作者指出使用锁存在一些缺点,并引入了 actors 这个新 Swift 语言特性。介绍了如何使用 actors 以及使用锁相比优点,并讨论了 actor 重入问题

21130

iOS 定时器

, repeats rep: Bool) // MARK: - invocation方式 /// 因Swift没有 NSInvocation,所以没法直接使用,如果非要使用可以借助OC进行中转 public...1、NSInvocation Swift 已经被禁止使用了,所以一般很少使用,如果非得使用需要借助 OC 进行中转;2、Block方式是 iOS 10 之后,目的就是方便使用,并且避免了Target-Action...NSInvocation禁止其实也会影响到 NSProxy Swift 使用 OC ,我们一般会采用继承 NSProxy方式实现一个弱代理来解决常见循环引用问题,比如常用YYKit... YYWeakProxy[1],但是 Swift 这种方式是不行,需要继承NSObject来进行实现,这个具体后面会有介绍。...Timer 不会自动加入到 Runloop ,需要再手动进行添加,而scheduledTimer形式会自动加入到当前线程对应Runloop

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

RunLoop源码阅读RunLoop源码阅读

mach_msg(mach消息转发机制) 系统内核收发事件、消息时使用消息传递函数。可以理解为多进程之间一种通讯调用机制。...() 只能供系统使用 DoTimers() NSTimer相关 DoMainQueue() 开发者调用 GCD API 将任务放入到 main queue 对外通讯 static void __...runloop执行时很复杂,会交叉进行,并不是看到这样简单. runloop一次loop可能会做事 while (alive) { //执行任务 DoBlocks(); DoMainQueue...//唤醒runloop //在当前线程下创建计时器 //没有任何msg消息情况下根据超时时间,超时后唤醒 dispatch_queue_t queue = pthread_main_np() ?...一般情况下被commone就是同时放入这两个modeitemmode 3,runloop是存在__CFRunLoops,而__CFRunLoops是一个全局字典,和runloop本身无关。

1.1K20

一个创建自定义事件源例子

上一篇文章我们介绍了RunLoop相关知识,但是毕竟我们实际开发很少应用,今天我们就通过介绍RunLoopiOS系统应用,来实现一个小小demo,启发我们开发过程设计代码架构时思路。...对于子线程,当线程有更多交互情况。例如: 使用端口或自定义输入源来与其他线程通信。 在线程上使用计时器程序中使用任何performSelector方法。...每个线程都有一个单独 RunLoop 对象之相关联。Cocoa,这个对象是 NSRunLoop 类一个实例。底层应用,它是一个指向 CFRunLoopRef 不透明类型指针。...指定一个超时值,让 RunLoop 完成所有正常进程,包括退出前通知 RunLoop 观察者。...不同是你可以无条件启动 RunLoop使用此方法。 注意:尽管删除 RunLoop 输入源和计时器也可能导致 RunLoop 退出,但这并不是常规方式。

2.1K100

使用 Swift Package 插件生成代码

我忘记了这件事一段时间后,Xcode 14公告允许Xcode项目中使用 Swift Package 插件,以及一些架构更改使提取类型信息变得容易得多,这让我有动力再次开始研究这个问题。...实施细节 我开始了一项任务,即创建一个构建工具插件, Xcode 14 引入命令插件不同,该插件可以任意运行并依赖用户输入,作为Swift软件包构建过程一部分运行。...让我们写一些代码吧 所有 Swift Package 一样,最简单入门方法是命令行上运行swift package init。...可以轻松创建命令行工具,并以更快、更安全方式解析执行过程传递命令行参数。...这需要确保选择源套件进程版本,以便它能够遵守插件沙盒规则。 Xcode附带两个版本sourcekit可执行文件,一个版本解析进程文件,另一个使用XPC向解析进程外文件守护进程发送请求。

2.2K20

iOS RunLoop介绍

RunLoop 概念 大家平时使用 iPhone APP 时候会发现,当你静止不进行任何操作时候,好像 APP 休眠了,但是当你点击按钮时候,就会立即触发一个事件,仿佛 app 一直待命...从图中可以看出,RunLoop 是线程一个循环,并对接收到事件进行处理。我们代码可以通过提供 while 或者 for 循环来驱动 RunLoop 。...RunLoop 显式唤醒 通知观察者线程唤醒 处理等待事件 如果一个用户定义计时器触发,处理计时器事件并重新启动循环。跳转到步骤2. 如果一个输入源触发,交付事件。...如果 RunLoop 显式唤醒但尚未超时,重新启动循环,跳转到步骤2. 通知观察者 RunLoop 已退出。 因为计时器和输入源观察者通知事件发生前被通知,可能通知时间实际发生时间有差距。...例如,你需要启动一个 RunLoop 如果你计划做以下事情: 使用端口或自定义输入源来与其他线程通信。 在线程上使用计时器程序中使用任何performSelector方法。

1.1K100

iOS之深入解析Xcode 13正式版发布40个新特性

、Vim 键绑定支持、Swift 包集合; 可以命令行使用 cktool CloudKit 数据库架构和记录进行交互; 可以命令行使用 TextureConverter 将纹理压缩为所有 Metal...); Xcode 分发助手中自动签名现在支持云签名; Xcode 13 支持 Mac 上为 TestFlight 配置应用程序; 现在可以命令行使用 notarytool Apple 公证服务进行交互...枚举自定义如何将性能测试自定义指标的测量值设置基线进行比较; XCTest 现在能够受支持 iOS 设备上 UI 测试合成指针交互; Xcode 现在为在运行测试时崩溃进程收集代码覆盖率数据...,并显示描述如何停止自动化文本; macOS ,或在具有密码设备上使用自动化时,必须从管理员帐户运行自动化,并且必须进行身份验证以授权自动化; XCTest 现在支持从 App Tracking...使用 iOS 15 beta SDK 进行编译时,几个窗口相关关键属性、方法和通知会更改行为。

8.7K40

Docker入门:Docker安装基本使用

一、前言 Docker支持主流Linux Server、也支持Windows Server,同时为了方便开发者开发环境中使用Docker,Docker官方也提供了支持Windows以及macOSDocker...1、本篇主要内容 Docker for CentOS安装 Docker Desktop for Windows安装 Docker Desktop for macOS安装 Docker基础配置使用 Docker...,但是开发者日常大部分使用Windows、macOS设备,不过没关系,Docker官方为开发者提供Docker Desktop ,相当于Windows、macOS上运行了一个带DockerLinux...缺省值为:latest 守护进程 (Daemon) Docker守护进程监听Docker客户端API请求并管理所在宿主机上镜像、容器、网络等等 客户端(Client) Docker客户端通过命令行或者...Docker SDK守护进程通信,一个客户端可以多个Docker宿主机上额守护进程通信,例如:docker pull ubuntu 镜像跟容器就好比是虚拟机备份文件跟虚拟机关系,我们可以根据备份文件创建多个具备同样环境虚拟机

1.4K10

携手 XPCServices,打造安全稳定 Mac 应用

没办法沙盒化应用有些情况下App是没办法沙盒化,比如:App需要调用系统命令行工具,因为命令行工具不在沙盒环境,对整个App沙盒化会导致调用失败。...图片应用场景下实战设计方案我们设计一个简单App,功能是支持用户选择电脑硬盘里图片进行查看,可以选择性进行裁剪(利用命令行工具Sips)然后将文件批量压缩打包,提交上传到后台。...讲如何一步步创建App篇幅也太冗长,所以,这里抽取一些重要或者比较复杂问题进行展开介绍。沙盒权限设置这块通过XCode直接配置很简单,重要还是理解沙盒机制和权限这些特性。...数据传递 XPCServices 进程数据传递是一个比较重要问题,通过模板构造能看到只是简单一些基础类型传递,但其实进程间数据传递有些持久化属性,所以它拥有一些专属类型。..., 注意 argumentIndex 是从0开始,如果不是reply回调参数设置 false图片剥离不能沙盒化功能sips 是macos 下自带简单图片处理工具,我们想要把它集成到App,直接地代码调用命令行工具

2.1K160

使用 Swift 6 语言模式构建 Swift

这意味着,当你更新 Xcode 版本或使用 Swift 6 编译器 Swift 工具链时,除非你明确启用 Swift 6 语言模式,否则你代码将使用 Swift 5 语言模式进行编译。...你可以手动执行此操作,但我建议使用像 Swiftenv(用于 macOS)或 Swiftly(用于 Linux)这样工具来管理你 Swift 工具链,就像本文中所示那样。...-2024-04-30-aSwiftly - Linux如果你 Linux 机器上构建代码,可以使用 Swift Server Workgroup Swiftly 命令行工具来安装和管理 Swift...这些错误表明我们代码存在需要修复并发问题。结论Swift 6 带来了许多重要新特性,如数据隔离和数据竞争安全检查,这些特性有助于编写更安全、更高效代码。...通过下载和安装 Swift 6 工具链,并在命令行或包清单文件启用 Swift 6 语言模式,我们可以提前体验和适应这些变化。尽管新特性带来了一些学习和调整成本,但它们最终会使我们代码更加健壮。

13610

如何通过EmondmacOS上实现持久化访问

具体步骤 emond是一个普通守护进程,每次系统启动时都会由launchd执行,其对于launchd配置文件和其他系统守护进程同一个地方:/System/Library/LaunchDaemons...所定义action需要针对执行命令action类型进行修改。 一个完整例子如下所示: ? ? 需要注意是,第一个操作是睡眠10秒,这样是为了等待网络连接。...但也有可能已经在野使用,或者其本身人畜无害。 如何检测 这种持久化访问方法需要对文件系统进行一些改变, 幸运是,macOS提供了fsevents API来捕获文件系统事件。...你可以注意到fswatch可以事件触发时提供时间戳。 此外,你可以将其输出到任何其他命令行,以便进一步处理。 你也可以指定多个目录进行监控。...为了简洁起见,我们从命令行启动osquery守护进程,并使用-config_path标志指定配置文件。

2.2K90

《HelloGitHub》第 71 期

提供启动进程、输入/输出重定向、等待完成、管道等功能,支持 Windows、Linux、macOS 操作系统 using CliWrap; var result = await Cli.Wrap("path...安装和管理 C/C++ 依赖命令行工具,适用于 Windows、Linux 和 macOS 操作系统 地址:https://github.com/microsoft/vcpkg 6、finalcut...它使用行业标准物联网协议 MQTT、CoAP 和 HTTP 连接设备,支持数据收集、处理、可视化和设备管理等功能。...一款适合程序员笔记工具,拥有和其它工具不一样体验 技术笔记:可直接在文档运行代码块(默认支持 JS 代码,其它语言需配置) 制作辅助工具:可在文档嵌入 HTML 组件来制作辅助工具 画图和图表:...地址:https://github.com/axnsan12/drf-yasg 28、tstock:命令行看股票走势工具 地址:https://github.com/Gbox4/tstock

2K00

iOS开发·RunLoop源码用法完全解析(输入源,定时源,观察者,线程间通信,端口间通信,NSPort,NSMessagePort,NSMachPort,NSPortMessage)

RunLoop线程 ---- 首先,iOS 开发能遇到两个线程对象: pthread_t 和 NSThread。...添加 Mode,传入字符串即为 Mode 名字,Mode对象应该是此时RunLoop内部创建。...完成向主线程port发送消息 [self sendPortMessage]; } } 当使用 NSMachPort 时候,本地和远程线程可以使用相同端口对象在线程间进行单边通信... Cocoa 这需要你给本地端口指定一个名字,并将名字传递到远程线程以便远程线程可以获得合适端口对象用于通信。以下代码显示端口创建,注册到你想要使用消息端口进程。...就不要用了 } 还有一种方案,子线程添加Timer,也可以解决上面的问题,但是需要注意是把timer加入到当前runloop后,必须让runloop 运行起来,否则timer仅执行一次。

2.2K20

《HelloGitHub》第 66 期

它易于使用功能强大,支持大型可定制函数库、单位计算和转换、符号计算(包括积分和方程)。作为用户你可以直接在命令行使用,作为开发者你也可以自己项目中使用这个库。...可以显示处理器、内存、磁盘、网络和进程使用情况和统计信息,还支持鼠标操作 7、TinyWebServer:Linux 下 C++ 轻量级 Web 服务器。...shell Swift 项目 28、Clipy:macOS 剪贴板扩展应用。...它易于使用功能强大,支持大型可定制函数库、单位计算和转换、符号计算(包括积分和方程)。作为用户你可以直接在命令行使用,作为开发者你也可以自己项目中使用这个库。...shell Swift 项目 28、Clipy:macOS 剪贴板扩展应用。

1.2K30

XcodeXcode 9 全新功能您会喜欢工具。内建 Interface BuilderXcode IDE

Swift 4 编译器现已兼容 Swift 3 代码。您可以轻松地眨眼之间迁移数据至 Xcode 9: app 中选择准备转移至 Swift 4 部分,余下部分可稍后再进行迁移。...源代码视图 通过数据点深入分析、进行排序以找出最消耗 CPU 方法,并直接在 Instruments UI 查看代码以查明问题所在。...macOS 包含其他工具 命令行工具 下载 macOS SDK,标题和构建工具 (如 Apple LLVM 编译器和 Make)。...这些工具能助您轻松安装开源软件或在终端内 UNIX 上进行开发。 macOS 可以您首次尝试构建软件时自动下载这些工具,您也可以随时在下载页面 (英文) 找到它们。...并由于 macOS UNIX 上构建而成,您可以使用 Xcode 或 macOS 随附命令行开发工具,轻而易举地构建流行开源语言版本。

8.3K30

Swift-Attack:专为蓝队设计macOS后渗透方法测试套件

本项目已经包括了一些使用命令行历史记录和磁盘二进制文件后渗透测试用例,这些内容比较容易被检测到。除此之外,还提供了使用API调用后渗透测试用例,而这种方式检测难度会更大。...工具安装配置 首先,广大研究人员需要使用下列命令将该项目源码克隆至本地: git clone https://github.com/cedowens/Swift-Attack 确保已经安装好了Swift...环境以及开发者工具(可以通过macOS应用商店安装),然后Xcode打开xcodeproj文件,并在Xcode中进行项目构建。.../Swift-Attack.app 接下来,命令行窗口中使用cd命令切换到上述路径: cd Swift-Attack.app/Contents/MacOS.........我们还提供了一个简单macro.txt文件,以辅助测试macOSOffice宏执行相关情况。

98560

openstack安装(40)

它可服务于web浏览器下显示文件和容器列表。为了改进性能,代理服务可以使用可选缓存,通常部署是memcache。...各种定期进程   为了驾驭大型数据存储任务,复制服务需要在集群内确保一致性和可用性,其他定期进程有审计,更新和reaper。 WSGI中间件   掌控认证,使用OpenStack认证服务。...swift 客户端   用户可以通过此命令行客户端来向REST API提交命令,授权用户角色可以是管理员用户,经销商用户,或者是swift用户。...swift-init   初始化环链文件生成脚本,将守护进程名称当作参数并提供命令。...swift-recon   一个被用于检索多种关于一个集群度量和计量信息命令行接口工具已被swift-recon中间件采集。 swift-ring-builde   存储环链建立并重平衡实用程序。

41920

现今 Swift二进制目标

文章目录 理解二进制 Swift 演变 命令行工具相关 结论 iOS 和 macOS 开发Swift 包现在变得越来越重要。...Apple 已经努力推动桥接那些缝隙,并且修复那些阻碍开发者问题,例如阻碍开发者将他们库和依赖由其他诸如 Carthage[1] 或 CocoaPods[2] 依赖管理工具迁移到 Swift 包依赖管理工具问题...命令行工具相关 由于 Swift 5.6 版本引入了用于 Swift 包管理器 可扩展构建工具[9] ,因此可以构建过程不同时间执行命令。...注意可执行文件必须在.zip文件根目录下,否则找不到。 Artifact Bundles 到目前为止,命令行工具所采用方法仅适用于 macOS 架构。... XCFrameworks 类似,工件包也可以通过使用 binaryTarget 包含在 Swift

1.8K20

【Rust日报】2024-02-08 Loungy:使用 Rust 和 GPUI 开发 MacOS 启动器

WebRay 渲染器已编译为 WebAssembly,将很快作为 npm 包和本地命令行工具提供。核心渲染内核是使用 WGSL 计算着色器实现。...Loungy:使用 Rust 和 GPUI 开发 MacOS 启动器 Loungy 是一个开源启动器项目,类似于 Spotlight、Alfred 和 Raycast,目前还在开发。...Loungy 特性包括: 启动应用程序 计算器(包括单位/货币转换,感谢 Numbat) 任务管理器(杀死进程MacOS 菜单搜索 下面这些特性目前还在旧版本 Tauri 应用,将在不久将来被移植过来...要运行项目,可以执行以下命令: cargo run dev 需要注意是,这个项目目前仅支持 MacOS,但开发者希望未来支持 Linux 构建。...Loungy 取决于以下开源项目: GPUI:令人愉悦框架 Numbat:用作计算器 Lucide:惊人开源 SVG 图标集 Catppuccin:使一切看起来都很棒主题 swift-rs:提供辅助功能

56510
领券