小众开发者 #Swift #Themes  Docker  Github
< Code is code />
  • ObjC++ 中的 lambda 和 block

    Sep 15, 2022

    lambda 表达式是 C++ 11 中增加的特性,和 ObjC 中的 block 很相似,都是匿名函数。 两者语法很相似: auto lambda = [] { }; lambda(); auto block = ^ { }; block(); 不同点 1: lambda 内部不能直接使用外部变量,需要把变量添加到捕获列表 block 则可以直接引用外部变量 NSMutableArray *array = NSMutableArray.array; auto lambda = [array] { [array addObject:@0]; }; auto block = ^ { [array addObject:@1]; }; 如果捕获的是 C++ 对象: …

    Objective-C

  • NSValue 、结构体与 objc_boxable

    Sep 15, 2022

    clang 的扩展属性 objc_boxable 支持把结构体声明为可打包,这样结构体就可以使用打包语法转换为 NSValue 类型。 本质上是语法糖。 举个例子: typedef struct __attribute__((objc_boxable)) CBox { double x, y, z; } CBox; NSValue *box = @(CBox{ 12.34, 23.45, 34.56 }); CBox value; [box getValue:&value]; 需要注意的是,结构体中的成员不能是 ObjC 的类型,否则会报 Non-trivially copyable type 'CBox' cannot be used in a boxed expression 编译错误。 …

    Objective-C

  • curl 断点续传

    Sep 13, 2022

    使用 cURL 下载大文件时,如果中途意外断开了,可以使用断点续传来下载: $ curl -C - -OL https://... 参数 -C - 表示从上次位置继续下载,-C 后面接着的参数是偏移量,- 表示自动从上次的地方接着下载。 …

    curl

  • 使用 simctl 安装 tvOS 和 watchOS 模拟器

    Sep 13, 2022

    Xcode 14 开始,把 tvOS 和 watchOS 模拟器从内置调整为按需下载,使得 Xcode 安装包一下少了 4G。 除在线按需下载模拟器,也可以手动下载安装: https://developer.apple.com/download/all/ 从官网上下载 watchOS_9_Simulator_Runtime.dmg 和 tvOS_16_Simulator_Runtime.dmg , 然后在命令行下使用 simctl 安装: …

    Xcode

  • Clash 旁路由透明网关

    Sep 12, 2022

    正常的客户端上网流程: 客户端 => 路由器 => 互联网 加上旁路由后,流程变成: 客户端 => 旁路由(透明) => 路由器 => 互联网 客户端的 DNS 和网关的 IP 都指向旁路由,流量由旁路由转发。 …

    clash

  • aria2 并发下载

    Sep 05, 2022

    浏览器自带的下载是单线程下载,如果要加速下载资源需要使用 aria2 。 原来浏览器自带下载需要 1 小时,现在命令行只需要 5 分钟: $ aria2c -x16 -s16 https://... -x:每个服务器的最大连接数。 -s:每个文件所使用的连接数。 如果服务器限制了多并发下载,就没有效果了。 …

    aria2

  • MacPorts 使用 Git 替代 Rsync 同步源

    Sep 05, 2022

    在使用 sudo port -v selfupdate 更新源的时候,发生了一个错误: Error: Failed to verify signature for MacPorts source! Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug. Error: /opt/local/bin/port: port selfupdate failed: Failed to verify signature for MacPorts source! 无法验证源的签名,暂时不确定是不是服务端的源有问题还是本地环境出了问题。 …

    macports

  • SwiftPM 编译命令参数

    Aug 30, 2022

    SwfitPM 全称是 Swift Package Manager ,是 Swift 的包管理工具。 SwiftPM 的 manifest 文件是 Package.swift,在编译源码之前需要先编译这个 manifest 文件,然后再执行它进行源码构建。 SwiftPM 的编译命令是 swift build,默认情况下是编译 debug 模式,release 模式需要增加参数:swift build -c release。 …

    Swift

  • C++ 17: 结构化绑定(Structured Binding)

    Aug 29, 2022

    结构化绑定(Structured Binding)是 C++ 17 的新特性,是一个很方便的语法糖。 typedef struct Rect { double x; double y; double width; double height; } Rect; Rect bounds{ 100, 100, 300, 400 }; auto [ x, y, w, h ] = bounds; 以上代码中,auto [] 就是结构化绑定的语法,x, y, w, h 4 个变量名就和结构体中的字段相对应。 …

    C++

  • Swift 调用私有方法

    Aug 29, 2022

    _UICreateScreenUIImage 是用于生成屏幕快照的一个私有方法,效果类似按下截屏组合键,不过这个函数调用不会触发截屏音效。 在 Objective-C 里,只需要声明一下方法的原型就可以使用了。 在 Swift 里可以使用 @_silgen_name 来达到同样的效果: …

    Swift

  • 16
  • 17
  • 18
  • 19
  • 20

©2021 lvvme.

Powered by Hugo & Notepadium ipv6 ready