iOS 摸鱼周报 #82 | 去中心化社交软件 Damus

本期概要

  • 本期话题:设计开发加速器线下活动:女人开发者社区日;
  • 本周学习:Python 怎么调用 Swift 程序
  • 内容引荐:包括现代 SwiftUI 编程讨论、可变视图、NSTimer、Swift Charts 等方面的内容
  • 摸一下鱼:去中心化交际软件 Damus;2022 年最后欢迎的 Chrome 插件;一款经过作业流驱动提效的作业工具 monday

本期话题

设计开发加速器线下活动:女人开发者社区日

@远恒之义:Apple 在 2022 年 10 月展开了 Apple Entrepreneur Camp(苹果企业家训练营)课程活动,首要面向女人、黑人和西班牙裔/拉丁裔创业者,协助她们供给技术支撑与免费服务。女人开发者社区日是针对中国女人开发者的特别活动,以此协助更多的中国女人开发者了解了解 Apple 平台。比较之前的企业家训练营要求,本次活动降低了门槛,参会资格不再约束安排必须满意女人创业者与女人开发者。

iOS 摸鱼周报 #82 | 去中心化社交软件 Damus

App 和 App 内购买项目即将实行税率和价格调整

@远恒之义:2023 年 2 月 13 日起,哥伦比亚、埃及、匈牙利、尼日利亚、挪威、南非和英国 App Store 的 App 及 App 内购买项目 (主动续期订阅除外) 的价格将上调。从 2023 年春季起,App 和 App 内购买项目的定价功能晋级将带来 700 个新增的价格点,开发者可愈加灵活地办理全球各地区定价。

本周学习

收拾修改:zhangferry

Python 怎么调用 Swift 程序

Swift 调用 Python 有现成的计划,便是 PythonKit,这个库是从 TensorFlow 迁移出来的,运用 Swift 里 @dynamicCallable@dynamicMemberLookup完结动态调用。

Python 调 Swift 则相对绕一些,核心思路是将 Swift 转成 C 言语库,然后运用 Python 的ctypes 去调用这个 C 言语库。大约流程如下:

iOS 摸鱼周报 #82 | 去中心化社交软件 Damus

1、导出 C 言语符号。

@_cdecl("myname")
public func myname (x: UnsafePointer<CChar>) -> UnsafePointer<CChar>{
    let ret : String = "My name is \(String(cString: x))"
    return UnsafePointer<CChar>(ret)
}

Swift 在编译时会根据命名空间和参数进行符号签名,为了确保符号的统一性,运用@_cdecl固定函数签名。别的C 言语的字符串跟Swift字符串不同,将字符串转成UnsafePointer<CChar>类型指针。

2、生成动态库让 ctypes 引证

$ swiftc -emit-library modules.swift

生成的动态库为libmodules.dylib。有时候还会出现一些动态库依靠联络,为了让 ctypes 也能够找到这个库,还需要修正动态检索路径:

export DYLD_FRAMEWORK_PATH="path/to/depend_dylib_folder"

该环境变量的指定要在 python 脚本外部履行。

3、python 经过 ctypes 调用对应函数

需要注意的是不同言语之间的类型转换

ctypes Python C Swift
c_int int int Int
c_char_p str char * String

关于ctypes运用能够参看官方文档:ctypes Python 的外部函数库。

以下是调用示例:

import ctypes
# 把对应动态库转成ctypes类型
modules = ctypes.CDLL('path/to/libmodules.dylib')
def py_myname(x):
    # 定义返回值类型
    modules.myname.restype = ctypes.c_char_p
    # python str to char
    y = ctypes.c_char_p(x.encode())
    # char to python str
    return modules.myname(y).decode()
str = py_myname("zhangferry")
print(str)  # My name is zhangferry

内容引荐

本期将引荐近期的一些优异博文,包括现代 SwiftUI 编程讨论、可变视图、NSTimer、Swift Charts 等方面的内容

收拾修改:东坡肘子

1、现代 SwiftUI — 来自:Piont Free

@东坡肘子: 近期 Point Free 在其博客上发表了多篇免费文章,以探求现代 SwiftUI 开发的最佳实践。内容包括:视图沟通、可识别数组、状况驱动导航、依靠项、测验等内容。

2、可变视图 — 来自:Chris Eidhof

@东坡肘子: _VariadicView 是 SwiftUI 供给的一个未公开 API ,它为布局容器供给了遍历子视图的才能。Chris Eidhof 在 Moving Parts 博客的基础上进一步对该 API 进行了研讨,并提出了视图是列表的观点。

3、NSTimer Block 为什么不会触发循环引证?! — 来自:wiiale

@东坡肘子: NSTimer 是 iOS Foundation 框架中一种计时器,在经过必定的时间间隔后触发,向目标目标发送指定的消息。本文将经过探求 NSTimer 与 Runloop 之间的联络来分析不会触发循环引证的原因。

4、Searchable — 来自:Alex Grebenyuk

@东坡肘子: 从 iOS 15 开端,SwiftUI 经过新的 .searchable 修饰符开端支撑查找栏功能。Alex Grebenyuk 经过本文将其在 Pulse 应用中有关 searchable 的运用体会和心得分享给大家。

5、掌握 Swift Charts — 来自:Majid

@东坡肘子: Swift Charts 是苹果的一个新框架,答应咱们运用 SwiftUI 以声明性的方式可视化数据。Majid 将经过多篇文章对 Swift Charts 进行翔实介绍,现在已以完结:基础、自定义符号、符号样式等内容。

摸一下鱼

收拾修改:zhangferry

1、Damus:一个建立在去中心化网络上的交际软件,最近挺火的,被称为「推特杀手」,现在已上线 App Store,国区没有。它具有这些特点:

  • 你发的内容彻底由你自己控制
  • 端到端加密,沟通进程无法被其他人查看
  • 无注册约束,创建账户会生成一对公私钥,公钥表示你的id,能够让其他人找到你,私钥表示登录凭据
  • 无中心服务器,而是运用去中心化中继器来分发消息
  • 可编程,支撑自定义机器人,用于处理消息分发和告诉
  • 能够赚钱,运用比特币给帖子打赏

App 端现在功能还比较粗糙,能够经过 iris 体会这种交际形式。去中心化长处是自由,不会有人删你帖子,但缺点也显着,简单成为非法活动的温床。它能供给的价值有多大以及多大范围内能成为主流交际平台,还有待观察。

iOS 摸鱼周报 #82 | 去中心化社交软件 Damus

2、2022 年最受欢迎的 Chrome 插件:这些插件掩盖作业、学习、文娱多个方面,列几个我感觉还不错的插件:

  • Tango:对于一个杂乱的操作页面,如果咱们想演示怎么操作,能够运用 Tango 快速生成一个操作过程攻略。

  • workona:一个书签办理插件,我看大部分人运用 chrome 都会出现 tab 栏占满的状况,tab 办理对我来说也一直是一个头疼的事情。这个插件供给了一种解决计划,便是为一切页面和书签建一个办理页面,每次对tab的切换都经过这个办理页面进行。

    iOS 摸鱼周报 #82 | 去中心化社交软件 Damus

3、monday:一个面相作业场景的项目办理平台,能够定制作业流来满意不同作业的需求,从而提高团队的一致性、效率和生产力。

iOS 摸鱼周报 #82 | 去中心化社交软件 Damus

4、Github 在个人信息页面新增了交际网络的链接,能够填四个链接:

iOS 摸鱼周报 #82 | 去中心化社交软件 Damus

关于咱们

iOS 摸鱼周报,首要分享开发进程中遇到的经验教训、优质的博客、高质量的学习资料、有用的开发工具等。周报库房在这里:github.com/zhangferry/… ,如果你有好的的内容引荐能够经过 issue 的方式进行提交。别的也能够申请成为咱们的常驻修改,一同维护这份周报。另可重视公众号:iOS生长之路,后台点击进群沟通,联络咱们,获取更多内容。

往期引荐

iOS 摸鱼周报 #81 | Apple 推出 Apple Business Connect

iOS 摸鱼周报 #80 | 开发加速器 SwiftUI 中办理数据模型

iOS 摸鱼周报 #79 | Freeform上线 & D2 本周开端

iOS 摸鱼周报 #78 | 用 ChatGPT 做点好玩的事