有用的知识又增加了:为何无法编译某些  WWDC 官方视频中的代码?

news2024/11/25 21:15:42

在这里插入图片描述

概览

作为 Apple 开发者而言,每期 WWDC 官方视频无疑是我们日常必看的内容。

不过,小伙伴们是否发现视频中有些示例代码在我们自己测试时却无法编译这一尴尬的情况呢?

在本篇博文中,我们将通过一则非常简单的示例来向大家展示为什么会出现这种情况,以及如何解决它!

闲言不再,Let‘s go!!!😉


无法编译! 搞什么飞机?

Apple 在 WWDC21 关于 SwiftUI 3.0 的介绍视频中,曾经谈到了 Button 视图新的显示方式。

其中, 该演示视频强调过,码农们可以用新加入的 .buttonStyle(.bordered)、 .controlSize(.large) 以及 .controlProminence(.increased) 修改器方法来进一步增强按钮的外观显示:

Button {
        ...
  } label: {
    Text("Continue")
      .frame(maxWidth: .infinity)
  }
  .buttonStyle(.bordered)
  .controlSize(.large)
  .controlProminence(.increased)
  .padding(.horizontal)

按钮的显示应该为如下效果:

在这里插入图片描述

不过,现在我们在 Xcode 14.3 中编译如上代码,妥妥的会报错:

在这里插入图片描述

因为 SwiftUI 根本找不到 controlProminence() 这个方法!这是怎么回事呢?

Apple 的“小心机”

Apple 在每次 WWDC 视频中都会展示一些新的功能,其中包括一些新的方法,属性和类等。

不过,上述这些内容并不都是“板上钉钉”的事,有些可能会在正式代码中做出修改甚至删减。

Apple 这种又想“炫酷”又时常“翻脸”的行为,对我们这些秃头码农来说是非常蛋疼的。

在这里插入图片描述

博文开头的“惨案”就由此而引出。

在 WWDC 视频发布时苹果“一拍脑袋”想出了个 controlProminence() 方法来渲染背景突出按钮的显示效果,可在 SwiftUI 3.0 正式发布时却觉得不妥做了人道毁灭!

都快两年了,你好歹也更新一下原来错误的视频啊!不可能!这对 Apple 来说绝不可能!!!

解决之道

所幸的是,诸如此类问题我们都可以自行搜索到解决之法,比如在一些技术大牛(比如我 😉 )的博客、stackoverflow、Apple 官方论坛、某哥里等待。

拿上面的问题来说吧,Apple 连吱都不吱一声就删除了 controlProminence() 方法,而将 SwiftUI 按钮背景突出显示的功能放在了 buttonStyle 的 borderedProminent 样式中,你说气人不气人 😐!

所以,原来的代码现在应该修改为如下样式:

Button {} label: {
    Text("Continue")
      .frame(maxWidth: .infinity)
  }
  .buttonStyle(.borderedProminent)
  .controlSize(.large)
  .padding(.horizontal)

现在疑惑终于解开了,我们又可以边掉头发边观赏可能有些许“变质”的 WWDC 官方视频了!棒棒哒!💯

总结

在本篇博文中,我们讨论了为何有些  官方 WWDC 视频中的示例代码无法编译通过的问题,并给出解决思路。

感谢观赏,再会 😎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Matlab】基于遗传算法的列车发车时刻(发车间隔)优化

【Matlab】基于遗传算法的列车发车时刻(发车间隔)优化 一、模型介绍(一)引言(二)符号定义(三)目标函数(四)约束条件4.1到达乘客数量4.2乘客进站限制4.3乘客总数量&#x…

Kyligence Zen产品体验-从人找数据到数据找人

目录 前言: 一、什么是Kyligence Zen? 1、个人总结 2、官方简介 二、1分钟打开新世界大门 个人总结: 1、注册 2、验证登录 三、上手初体验 1、快速上手(入门) 2、定制化应用 四、实战体验 综述: 1、卡…

java transient关键字 JSON序列化问题

今天做项目的时候,遇到了一个奇怪的事情看图: 在这个JSONObject中是有这个object对象的,但是我输出的的却没有这个对象,这是怎么回事? 这样不明显我换一个方式去输出 我在查看了代码之后发现了我的ResponseStatus这…

数据结构-查找-树形结构(二叉排序树、二叉平衡树、红黑树、B树、B+树)查找

目录 一、二叉排序树(BST) 查询 插入 构造二叉排序树 *删除 *查找效率分析 二、二叉平衡树 *插入数据保持平衡 LL ​编辑 RR LR RL 结 *查找效率分析 删除 三、红黑树 *插入 *删除 四、B树 *插入 *删除 五、B树 一、二叉排序树(BST) 定义:二叉排序…

python的opencv操作记录(13)-增强之直方图均衡化

文章目录 直方图增强基本逻辑-均衡化calcHist && equalizeHistcalcHistequalizeHist 自适应直方图均衡化 前段时间忙活深度网络和android的东西去了,好久没讲讲传统图像处理了,这一篇继续来说说opencv中的传统图像处理部分——图像增强之直方图增…

【谷粒商城之订单服务-RabbitMQ延时队列】

本笔记内容为尚硅谷谷粒商城订单服务锁库存事务最终一致性部分 目录 一、RabbitMQ延时队列 二、具体实现 1、 创建上述队列和路由组件 2、解锁库存 解锁库存的两种情况 1、当订单业务提交后回滚 2、订单取消解锁库存 三、关闭订单 四、消息丢失、挤压、重复等解决方案…

c++ 继承与派生

继承就是在原有类的基础上产生新类,从而减少了代码重复的必要 格式: class A{}; class B:继承方式 A{}; 在c继承中,有以下几点注意 (1)基类的构造函数与析构函数不能被继承 (2)派生类对基类成员的继承没有选择权,不能选择继承…

c++ 常用总结(三)

1.设计模式 GitHub - FengJungle/DesignPattern: Design pattern demo code (一) ① 简单工厂模式 再不学简单工厂模式,就真的要去工厂搬砖啦~_冯Jungle的博客-CSDN博客 通过以下的例子可见,只需要提供产品名称作为参数&…

基于springboot+mysql+SpringDataJPA +html实现学生选课管理系统

基于springbootmysqlSpringDataJPA html实现学生选课管理系统 一、系统介绍1、系统主要功能:2.涉及技术框架:3.本项目所用环境:4.项目需求 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能: 管理员&#xf…

【C++】| 03——STL | 迭代器

系列文章目录 【C】| 01——泛型编程 | 模板 【C】| 02——STL | 初识 【C】| 03——STL | 迭代器 【C】| 04——STL | 容器_vector 文章目录 1. 什么是迭代器2. 迭代器的分类3. 不同容器对应的迭代器4. 迭代器的好处5. 迭代器的操作 1. 什么是迭代器 迭代器就是指向容器内元素…

基于MATLAB的路面裂缝检测识别算法代码(GUI系统设计+图像预处理+裂缝检测)

资源地址: 基于MATLAB的路面裂缝检测识别算法代码(GUI系统设计图像预处理裂缝检测)资源-CSDN文库 主要内容: 1、运行Gui_Main.m程序,得到GUI界面 2、首先点击载入图像文件 3、后续便可以点击右侧的其他按钮进行分析…

C++linux高并发服务器项目实践 day10

Clinux高并发服务器项目实践 day10 守护进程进程组会话进程组、会话操作函数守护进程守护进程的创建步骤 线程线程和进程的区别线程之间共享和非共享资源线程操作线程创建线程退出线程参与线程分离线程取消 线程属性 守护进程 在UNIX系统中,用户通过终端登录系统后…

DCMM评估之战略维度沟通

01 数据战略规划过程 过程描述: 过程描述如下:a) 识别利益相关者,明确利益相关者的需求;b) 数据战略需求评估,组织对业务和信息化现状进行评估,了解业务和信息化对数据的需求;c) 数据战略制定,包含但不限于:1) 愿景陈述,其中包含数据管理原则、目的和目标;2) 规划…

SpringCloud 远程调用Feign、网关Gateway、配置中心Nacos、微服务架构小结、Nacos搭建集群

统一检查maven maven依赖出错的解决 注意代码格式化。因代码格式混乱,导致代码出错,pom.xml出现重复的parent标签 学习方法,听得懂为什么要这么做,要远远比 怎么做 重要的多 一、远程调用Feign 能够使用Feign进行远程调用能够…

【C++学习】创建二维动态数组

1.指针 创建二维动态数组_牛客题霸_牛客网 (nowcoder.com) 使用指针的指针 使用指针的指针可以很方便地创建动态的二维数组,其关键在于使用两层指针进行分配。 以下是一个动态创建n行m列的二维数组的示例代码: int **arr new int*[n]; // 创建一个…

深度学习训练营J2:ResNet50v2算法分析与实战

深度学习训练营J2:ResNet50v2算法分析与实战 原文链接环境介绍0.引言论文分析与解读1.ResNet50和ResNet50v2之间的结构对比2.不同结构之间的尝试 3.关于激活的不同尝试4.文章结果 ResNet50v2架构复现5.残差结构6.模块构建7.架构展示以及网络构建 8.网络结构打印ResNet50v2完整结…

Python——1

一、注释 (1)单行注释:#需要注释的内容(#) (2)多行注释:需要注释的内容(三引号) 二、变量及变量类型 1.变量 语法定义:变量名 变量值&#…

【小程序】微信云托管服务

链接 官方文档 云托管官网 特点 无需自提供服务,有云托管平台自动分配,并自动缩容/扩容支持多种语言及模板实例采用容器化管理方式实现服务部署支持小程序内网访问,仅公网测试,提供足够的安全防护,微信用户就近接入…

Python:BeautifulSoup库介绍

BeautifulSoup库介绍 1、BeautifulSoup是Python中的一个第三方库,其最主要的功能是处理HTML文档 ⑴查找HTML文档中的指定标签 ⑵获取HTML文档中指定标签的标签名、标签值、标签属性等 ⑶修改HTML文档中指定标签 2、BeautifulSoup库将HTML文档解析为一…

服务器如何做端口映射,使服务器之间通信,然后访问目标网站(baidu.com)

文章目录 服务器如何做端口映射,使服务器之间通信,然后访问目标网站(baidu.com)问题缘由所需环境操作步骤1. 目的服务器设置2. 中间服务器设置3. 修改客户端 总结 服务器如何做端口映射,使服务器之间通信,然后访问目标…