首页
学习
活动
专区
圈层
工具
发布

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

属性以在标签被截断时显示工具提示扩展; 从文档检查器 > 模拟指标 > 场景大小自定义 Mac Catalyst 模拟场景大小; 通过属性检查器为使用 Mac Catalyst 构建的应用程序指定 UIControl...; 可以通过选择 Edit > Copy Location 以 : 的形式将所选内容的当前位置复制到剪贴板; 在 Swift 中将占位符扩展为闭包时,代码完成使用闭包的参数名称而不是 ;...; 从 Swift 类、协议或方法声明跳转到定义还可以轻松导航到整个工作区中的所有子类、扩展和符合协议的类型; Xcode 13 包括重新设计的 Swift 代码完成功能,可最大限度地提高可靠性和性能,...,并显示描述如何停止自动化的文本; 在 macOS 中,或在具有密码的设备上使用自动化时,必须从管理员帐户运行自动化,并且必须进行身份验证以授权自动化; XCTest 现在支持从 App Tracking...您可以使用 DataFrame 读取 CSV 和 JSON 文件,以及连接、分组和聚合数据。

12.8K40

Swift 中的属性包装器

在这种情况下,Swift 5.1的属性包装器功能非常有用,因为它使我们能够将此类行为和逻辑直接附加到属性本身上,这通常为代码重用和归纳开辟了新的机会。...例如,假设我们正在开发一个消息应用程序,它使用 Foundation 的 UserDefaults API在磁盘上存储各种用户设置和其他轻量级数据。...上面的设置使我们的新属性包装器易于使用,只要我们希望一个属性由用户默认值.standard,但由于我们参数化了该依赖关系,如果愿意,我们还可以选择使用自定义实例——例如,为了方便测试,或者能够在同一应用程序组中的多个应用程序之间共享值...但是,有时我们实际上可能希望访问属性包装器本身,而不是其包装的值。在使用Apple的新SwiftUI框架构建UI时,这种情况尤为常见,该框架大量使用属性包装器来实现其各种数据绑定API。...为了将该状态绑定到我们的视图,我们用@State对其进行了注释,然后通过以前缀$传递给步进器,使其直接访问该包装状态(而不仅仅是其当前的Int值) - 像这样: struct QuantityView:

3.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在IPA中重签名iOS应用程序

    但是有一种可行的解决方案,即使用我们手头上的配置文件来重新启动应用程序,并将其部署到我们的测试设备上。...在这篇文章中,我们将演示如何重新对一个iOS应用程序签名,并生成一个IPA文件,然后将其部署到我们的测试设备上。...你可以选择使用frida-ios-dump或其他工具,这个看你个人喜欢,但最终我们得有一个可以使用得IPA文件。我们这里选择使用的是OWASP iGoat-Swift。...你可以直接点击【这里】下载iGoat-Swift_v1.0.ipa,并完成IPA文件的“提取”。 接下来,我们使用ios-deploy来将应用程序加载到我们的测试设备上。...我们可以把IPA文件当作ZIP文件来进行解压,不用去在意文件的扩展名,因为我们可以直接修改扩展名。

    3.9K10

    苹果突然不造车了,马斯克或是最大赢家| Swift 周报 issue 48

    分析师:马斯克或是最大赢家提案:自定义 SerialExecutor 的隔离检查Swift 论坛:讨论在整个应用程序中共享变量推荐博文:使用 MLX 和 Swift 进行设备端机器学习研究话题讨论: 如果...5) 讨论在整个应用程序中共享变量?内容大概这篇文章讨论了 Swift 应用程序中全局变量的使用,特别是在多个视图之间共享数据。...他们提供了 A 类的代码示例,该类通过共享队列将任务发送到另一个类(缓存)来同步读取和异步写入。 他们询问在迁移到 Actor 或现代并发时如何在类之间执行类似的同步。...A 类(ThreadSafeClassA)包含读取和写入消息的方法,而 B 类(ThreadSafeClassB)则异步处理消息检索。 用户有兴趣在迁移过程中维持这种同步模式。...通过本文,读者可以了解到如何快速开始使用 MLX Swift ,并利用其在机器学习研究中的潜力。

    50032

    Swift 中 User Defaults 的读取和写入

    前言 User Defaults 是 Swift 应用程序存储在应用启动之间保持的首选项的首选解决方案。它是由属性列表(plist)文件支持的键-值存储。...共享 User Defaults 与其他应用程序和扩展共享 User Defaults 使用所谓的应用组,你可以与其他应用程序和扩展共享 User Defaults 容器。...我强烈建议从一开始就使用这种技术,即使现在可能没有共享首选项的需要,但如果你添加需要从主应用程序中读取或写入首选项的扩展,以后你会感谢自己的。...要配置应用组,你需要向项目设置中添加一个新的功能: 你可以通过添加应用组功能来开始与其他应用程序和扩展共享 User Defaults。 你可以在苹果的文档中找到详细的说明。...") } 现在,你可以通过使用静态属性来访问共享的组容器: UserDefaults.group.set(["AAPL", "TSLA"], forKey: "favorite-stocks") 任何使用相同应用组的应用程序或扩展现在都可以读取和写入最喜欢的股票

    1.1K20

    发送移动信号到OpenTelemetry Collector

    提供有意义的体验是任何移动应用程序的主要目标。购物者想要购物;影响者想要上传他们最新的热门帖子;遛狗者想知道何时何地带他们的下一只小狗。最终决定应用程序运行情况的是用户,而不是计算输出。...在本教程中,我们将展示如何使用 OpenTelemetry Collector 将移动应用程序中的信号链接到示例跟踪后端。...捕获移动遥测数据 为了从 iOS 应用程序中获取跟踪,我们将使用 Embrace Apple SDK 中的工具,这是一个开源的、Swift 原生软件开发工具包,构建在 OTel 之上。...在这里,我们可以附加由 OTel 生态系统中的工程师维护的任何兼容的 Swift 语言 OTel 导出器。...此跟踪可以与其他应用信号和库初始化相结合,以创建特定于正在启动的应用的“应用启动”测量,而不是一刀切的测量。

    50710

    Swift 5.6到5.10新特性整理

    ;我们不希望该代码被编译到我们的最终应用程序中,我们只希望其中包含最终的日期字符串。...它的工作原理是将函数的代码写入你的应用程序二进制文件中,然后执行运行时检查:如果你的用户使用的是足够新的操作系统版本,那么将使用系统自己的函数版本,否则将使用复制到你的应用程序二进制文件中的版本。...SE-0354 添加了使用 /.../ 而不是通过 Regex 和字符串创建正则表达式的能力。 SE-0357 添加了许多基于正则表达式的新字符串处理算法。...: 当我们使用 Regex 从字符串创建正则表达式时,Swift 必须在运行时解析字符串以确定它应该使用的实际表达式。...例如,如果你想要读取分布式 actor 的 username、firstName和 lastName 属性,你应该更倾向于使用单个方法调用请求所有三个属性,而不是将它们作为单独的属性请求,以避免可能在网络上来回多次

    3.3K11

    Swift 周报 第三十一期

    隐私清单是一份文件,会以单一标准格式概述 App 中第三方代码的隐私做法。当开发者准备分发他们的 App 时,Xcode 会将开发者使用的所有第三方 SDK 中的隐私清单合并为一个简单易用的报告。...Schema 描述响应体的结构,使得我们能够在开发应用程序时生成网络代码,而不需要手动编写和维护网络代码,专注于核心业务逻辑。...] 摘要: Swift 宏是在 Swift 5.9发布的一项新功能,它允许你通过自定义编译时检查和生成新的代码,在编译时将它们写入到你的文件中,从而消除冗余的样板代码。...在 Swift 服务器端 Vapor 和客户端应用之间共享 Swift 代码[13] 摘要: 这篇博客讨论了在客户端应用和后端服务器之间共享 Swift 代码的好处以及如何通过 Swift 包和 Vapor...通过共享模型和端点定义,您可以确保两个侧面都使用相同的层,避免出现意料之外的请求失败。博客提供了定义软件包结构、暴露模型、共享端点定义和在后端软件包中配置端点的代码示例。

    51920

    将 iOS 应用体积缩小一半的秘籍:妥善运用动态框架

    这当然不纯是因为现代汽车的开发者特别喜欢.car 文件,而是 iOS 扩展中的部件(MyHyundaiWidget)和共享扩展(MyHundaiSharePoi)都以沙箱化的形式与应用本体各自保持独立。...使用 SwiftPM 创建动态框架 默认情况下,Xcode 允许开发者选择以静态还是动态方式链接 Swift 包。而在实际操作中,它总是会直接将包捆绑为静态库。...我们的扩展目标应使用“Do Not Embed”不嵌入选项,以避免在应用程序包中制作额外的副本。 伞形框架 现在,我们的 Swift 包已经成为动态框架。...起初,除了 Package.swift 和这个神秘的 shell 脚本: generate_xcframework.sh,EmergeAssetsSPM 包中再无其他文件。...启动速度 我可不是要盲目宣传动态框架,它也有自己的缺点,而且最直接的影响就是大大拖慢应用程序的启动速度。

    1.5K10

    Apple 营收有望再创新高 | Swift 周报 issue 47

    该提案解决了由于同步、非隔离函数中缺乏静态信息而导致当前动态隔离断言失败的情况。 其动机通过一个示例来说明,其中参与者直接使用自定义执行器,从而导致错误的参与者执行器假设。...#proposed-solution2) 讨论从本地 HTML 文件创建属性字符串内容大概用户尝试在 Mac 应用程序的临时目录中显示来自 HTML 文件和 CSS 文件的属性字符串。...此外,用户尝试使用 NSAttributedString 类方法 loadFromHTML 创建属性字符串,但此方法返回 Void 而不是属性字符串。...用户寻求有关如何从本地 HTML 文件成功创建属性字符串并解决神秘的 65806 错误的指导。...6) 讨论在字符串插值中附加文字内容大概用户正在询问字符串插值中 appendLiteral 方法的用法和潜在限制。

    83732

    Flutter Platform Channels(一)

    与其他应用共享数据,打开其他的应用,... 持久首选项,特殊文件夹,设备信息,... 对所有这些平台API的访问可以融入Flutter框架本身。...因此,虽然Flutter邀请你在Dart中编写app,但你依然可以在宿主app中使用Java/Kotlin或*Objective-C/Swift执行尽可能多的操作,直接调用平台特定的API。...message channels 假设你要发送和接收字符串消息而不是字节缓冲区( byte buffers)。...数据会被编码成二进制格式,编码具有可自定义,合理而紧凑以及可扩展的特征。在flutter中,通道通信默认选用的是标准解码器(StandardMessageCodec)。...对于使用了platform channel的大多数应用程序,你需要交流的不仅仅是值,也包括你希望每个值会生什么,或者你希望接收者如何解释这个值 。

    5.7K01

    讲解cannot be registered to your development team. Change your bundle identifier t

    以下是一个示例代码,展示了如何使用Swift语言在Xcode中更改Bundle Identifier: swiftCopy code import UIKit class ViewController:...你可以将"com.example.myapp"替换为你希望使用的唯一标识符。 Bundle Identifier(包标识符)在iOS开发中是用来唯一标识一个应用程序的字符串。...它在开发过程中具有重要的作用,特别是在以下方面: 应用程序的唯一性:使用唯一的Bundle Identifier可以确保你的应用程序在App Store中具有独特的身份,并避免与其他应用程序产生冲突。...App Group和App Extensions:Bundle Identifier还用于标识应用程序组(App Group),以便应用程序和其扩展之间进行共享和通信。...数据持久性:在应用程序中使用Bundle Identifier来创建文件路径或使用UserDefaults存储数据时,可以确保数据不会与其他应用程序冲突。

    1.3K10

    技术速递|使用 Native Library Interop 为 .NET MAUI 创建绑定

    当您想要使用不是用 C# 编写的第三方 iOS 或 Android 库时,您需要一种在 .NET MAUI 应用程序中使用它的方法。...在这篇文章中,我将分享我自己使用 .NET MAUI 的 Native Library Interop 的经验,并提供了一个实际示例来说明如何在 .NET MAUI 应用程序中使用这种创新的方法。...虽然这实际上意味着我可以在 Swift 中定义任何 API,但正如模板字符串示例所示,我现在将专注于创建图表 API 接口的任务,并将在文件顶部导入 DGCharts。...作为一名 .NET 开发人员,我不能说我是 Swift 方面的专家,但可以直接从 Charts 库存储库中利用 Swift 示例,并获得 GitHub Copilot 的帮助,这无疑是一个改变游戏规则的举措...正如我不是最精通 Swift 的专家一样,我也不是最精通 Android 的专家……但我仍然是一名移动应用开发人员!能够直接利用在线资源和 GitHub Copilot 使这一切变得非常可行。

    1.1K00

    成为一名优秀 Swift 开发人员的 10 个小技巧

    首先代码来实现导航,而不是 Storyboard Storyboard 很好,自从 Apple 推出后,我就一直使用。...为项目选择正确的库是一项有意思的工作,大多数情况下,使用基本库就正确的做法。这可以让你专注于特定应用程序的特定功能,而不是在常见的功能上浪费时间。...如何还不够的话,在 @IBDesignable 你甚至可以支持 Storyboards 的扩展,它有很多扩展集合,我喜欢编写简短的方法来扩展字符串、按钮等以完成简单的任务。...扩展很棒,你可能会过渡使用它。不过没关系,将扩展组织到单独的文件中,保持可读性就行了。 7. 尽可能使用容器视图 随着 UI 越来越复杂,我们通常必须集成 Tab、滑动布局,Page 等内容。...此外,在 UI 元素上使用 tag 来标识它们,而不是使用其标题或其它内容来区分。 结论 我没有提到所有基本的 OOP 原则。显然,您必须以正确的方式实现类,封装,抽象和设计模式。

    3.2K40

    WWV 2018年十大必看视频

    自动布局看到了很大的改进,因为现在处理常见的陷阱。独立的兄弟视图和依赖的兄弟视图呈现现在线性增长而不是指数增长。...无论应用程序是否有条形图,它们都可以在所有设备上受益,而不仅仅是iPhone X. Siri Shortcuts可让您轻松地从您的应用程序中获取常见操作,并将其提供给Siri。...在示例应用程序中,Soup Chef,Apple演示了如何对快捷方式进行分类,然后添加一些参数,如字符串,数字,人物或位置。一旦捐赠给Siri,您可以通过说出您提供的短语来触发快捷方式。...您可以在Mac上直接在Swift中创建和训练模型。创建ML可以与图像识别,文本分析甚至表格数据一起使用,其中多个特征可以进行可靠的预测。...Kasia Wawer通过解释如何构建高效布局来继续会议。使用并不总是出现的元素的一个技巧是将其设置为隐藏而不是添加或删除它。考虑始终存在的约束,并分别对来来去去的约束进行分组。

    21.1K20

    C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService(一)

    2、共享程序集可以被多个应用程序共享,通常包含可被其他应用程序引用和重复使用的通用代码库。总体而言,"配件" 在.NET 中指的就是程序集,它是.NET应用程序的基本构建块。...用户控件通常包含一个带有 .ascx 扩展名的文件,该文件包含用户控件的 HTML 和服务器端控件的定义。通过将用户控件添加到页面或其他容器中,可以在页面上使用该用户控件的功能。15....使用白名单(允许的字符列表)而不是黑名单(禁止的字符列表)来验证输入。4、不要直接暴露错误信息:在生产环境中,不要直接向用户显示详细的错误信息。攻击者可以利用错误信息获取有关数据库结构的敏感信息。...将错误信息记录到日志中,而不是直接返回给用户。5、使用存储过程:存储过程可以提供一定程度的安全性,因为它们预先编译,参数化,且无法被 SQL 注入直接修改。...虽然在你的代码示例中 s 的值从 "abc" 变成了 "123",但这并不是字符串本身的变化,而是 s 变量指向了一个新的字符串对象。

    1.5K10

    WWDC 2018年十大视频评论

    自动布局看到了很大的改进,因为现在处理常见的陷阱。独立的兄弟视图和依赖的兄弟视图呈现现在线性增长而不是指数增长。...无论应用程序是否有条形图,它们都可以在所有设备上受益,而不仅仅是iPhone X. Siri Shortcuts可让您轻松地从您的应用程序中获取常见操作,并将其提供给Siri。...在示例应用程序中,Soup Chef,Apple演示了如何对快捷方式进行分类,然后添加一些参数,如字符串,数字,人物或位置。一旦捐赠给Siri,您可以通过说出您提供的短语来触发快捷方式。...您可以在Mac上直接在Swift中创建和训练模型。创建ML可以与图像识别,文本分析甚至表格数据一起使用,其中多个特征可以进行可靠的预测。...Kasia Wawer通过解释如何构建高效布局来继续会议。使用并不总是出现的元素的一个技巧是将其设置为隐藏而不是添加或删除它。考虑始终存在的约束,并分别对来来去去的约束进行分组。

    4.7K20

    「音视频直播技术」JNI编程常见问题

    return JNI_VERSION_1_6; } 你也可以用共享库的完整路径名调用System.load函数而不是System.loadLibrary。...传递给NewStringUTF的数据必须使用修改过的UTF-8格式。常见的错误是从文件或网络流读取字符数据,并将其传递给NewStringUTF,而不对其进行过滤。...类似地,您可以使用SetArrayRegion调用将数据复制到数组中,并使用GetStringRegion或GetStringUTFRegion从字符串中复制字符。...如果你正在查找一个内部类,请使用'$'而不是'.'。一般来说,在.class文件中使用javap是查找类的内部名称的好方法。 如果您使用混淆器,请确保混淆器没有抽出您的类。...如果你从这个线程调用FindClass,JavaVM将在“系统”类加载器中启动,而不是与您的应用程序相关联的加载器,因此尝试查找应用程序特定的类将失败。

    2.2K20

    Swift 5.4 新特性

    Swift 一直具有对简单表达式使用隐式成员语法的能力,例如,如果您想在 SwiftUI 中为某些文本着色,则可以使用 .red 而不是 Color.red: struct ContentView1:...但是,我们可以创建一个 Result 构建器,该构建器了解如何使用所需的任何转换将多个字符串转换为一个字符串,如下所示: @resultBuilder struct SimpleStringBuilder...() 中的每个语句自动转换为单个字符串。...现在支持局部变量的属性包装器 属性包装器最初是在 Swift 5.1 中引入的,它是一种通过简单,可重复使用的方式将附加功能附加到属性的方法,但是在 Swift 5.4 中,它们的行为得到扩展以支持将其用作函数中的局部变量...Swift 5.4 起,我们可以在常规函数中使用该属性包装器,而不仅仅是将其附加到属性上。

    2K40
    领券