当前位置: 首页 > news >正文

网站备案流程慢苏州我可以网络科技有限公司

网站备案流程慢,苏州我可以网络科技有限公司,年栾洪全单页做网站教程,做网站公司郑州郑州的网站建设公司概览 SwiftUI 的出现极大的解放了秃头码农们的生产力。SwiftUI 中众多原生和自定义视图对于我们创建精彩撩人的 App 功不可没#xff01; 不过#xff0c;倘若小伙伴们略微留意过 SwiftUI 框架头文件里的源代码#xff0c;就会发现里面嵌有一些奇怪 Never 类型#xff0c… 概览 SwiftUI 的出现极大的解放了秃头码农们的生产力。SwiftUI 中众多原生和自定义视图对于我们创建精彩撩人的 App 功不可没 不过倘若小伙伴们略微留意过 SwiftUI 框架头文件里的源代码就会发现里面嵌有一些奇怪 Never 类型带来阵阵“违和感” 那么 Never 到底是一种怎样的存在它们在 SwiftUI 中又到底扮演着什么角色呢 在本篇博文中您将学到如下内容 概览1. 莫名其妙的”Never“2. 什么Never 竟然是一种”视图“3. Never 在 SwiftUI 视图中的作用4. 尝试创建一个自定义原生 “Never” SwiftUI 视图总结 闲言少叙Let‘s find out 1. 莫名其妙的”Never“ 各位小伙伴们可能会奇怪 Never 到底表示什么如果没记错的话Never 的定义早在 SwiftUI 之前就已是 Swift3.0里的“囊中之物”了 从  官方代码的注释中可以清楚的看到 Never 存在的意义 /// The return type of functions that do not return normally, that is, a type /// with no values. /// /// Use Never as the return type when declaring a closure, function, or /// method that unconditionally throws an error, traps, or otherwise does /// not terminate. /// /// func crashAndBurn() - Never { /// fatalError(Something very, very bad happened) /// }由上可知Never 在 Swift 中主要有两种用途 表示非正常返回方法或函数、闭包的返回类型比如抛出异常、断言等表示没有值的类型 比如虽然和实际返回类型不一致下面的 test 和 otherTest 方法都在某些错误条件下“返回” 了 Never 值 func test(a: Int, b: Int) - Int {guard b ! 0 else { fatalError()}return a/b }func otherTest(items: [String]) - [String] {guard !items.isEmpty else { preconditionFailure(不能为空) }return items.map { $0.debugDescription } }test(a: 10, b: 0) otherTest(items: [])通过查看 fatalError() 和 preconditionFailure() 函数的定义我们发现它们哥俩都会返回 Never public func fatalError(_ message: autoclosure () - String String(), file: StaticString #file, line: UInt #line) - Neverpublic func preconditionFailure(_ message: autoclosure () - String String(), file: StaticString #file, line: UInt #line) - Never同样Never 也可以用来表示某种类型“不存在”的值注意这种不存在和 nil 并不相同 let p PassthroughSubjectInt,Never()如上代码所示我们定义的 PassthroughSubject 发布器永远不会发生错误其错误类型为 Never 经过上面的讨论我们可以发现Never 的作用比想象的要大的多 值得注意的是作为枚举类型的 Never 不能被实例化至少我们从外部不能我们只能“享用”它们现成的实例。 那么Never 和 SwiftUI 又有怎样的关系呢 2. 什么Never 竟然是一种”视图“ 是滴你没看错Never 在 SwiftUI 中做了扩展它确实可以表示为一种“视图”类型 available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) extension Never : View { }available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) extension Never {/// The type for the internal content of this AccessibilityRotorContent.public typealias Body Never/// The internal content of this AccessibilityRotorContent.public var body: Never { get } }比如我们耳熟能详的 VStack 定义中就有 Never 可爱的身影 available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) frozen public struct VStackContent : View where Content : View {inlinable public init(alignment: HorizontalAlignment .center, spacing: CGFloat? nil, ViewBuilder content: () - Content)public typealias Body Never }而且Never 在 SwiftUI 不仅是一种视图它还可以是一种 ShapeStyle、 TableColumnContent、Gesture 甚至一种 Scene available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) extension Never : ShapeStyle {/// The type of shape style this will resolve to.////// When you create a custom shape style, Swift infers this type/// from your implementation of the required resolve function.public typealias Resolved Never }available(iOS 16.0, macOS 12.0, *) available(tvOS, unavailable) available(watchOS, unavailable) extension Never : TableColumnContent {/// The type of sort comparator associated with this table column content.public typealias TableColumnSortComparator Never/// The type of content representing the body of this table column content.public typealias TableColumnBody Never/// The composition of content that comprise the table column content.public var tableColumnBody: Never { get } }available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) extension Never : Gesture {/// The type representing the gestures value.public typealias Value Never }available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *) extension Never : Scene { }看到这里小伙伴呢可能感觉有些“头晕目眩”。SwiftUI 里搞这么多 Never 到底是要闹哪样呢 3. Never 在 SwiftUI 视图中的作用 虽然很多小伙伴们都早已对 SwiftUI 撸码驾轻就熟不过大家有没有考虑过这样一个问题我们知道每个 View 都有一个 Body类型为 some View“爷爷”视图的 Body 是“爸爸”视图而“爸爸”视图的 Body 是“儿子”视图…这样下去会出现“子子孙孙无穷尽”的情况最终总要有一个最后的视图啊 比如观察下面的代码 struct Text: View {var body: some View {???} }struct Son: View {var body: some View {Text(Son)} }struct Baba: View {var body: some View {Son()} }其中Baba 的 Body 中是 Son 视图而 Son 的 Body 嵌入的是 Text 视图那么 Text 里面又该怎么实现呢我们假设 Text 里面还有一个 InnerText 视图那么 InnterText 里又该如何 这就是 Never 在 SwiftUI 中存在的绝佳意义它终结了上面这种无穷尽的视图 Body 链 那么视图嵌套到底在哪里终结呢答案就是在 SwiftUI 内置的原生视图里。 比如在上面的例子中最终 Son 中里面是一个 Text 视图大家都知道 Text 视图是 SwiftUI 提供的众多原生视图之一。从码农的角度来看它不能再被分解从某种意义上可以认为它是一个“原子”视图 available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) extension Text : View {/// The type of view representing the body of this view.////// When you create a custom view, Swift infers this type from your/// implementation of the required View/body-swift.property property.public typealias Body Never }看到了吗SwiftUI 框架头文件里将 Text 的 Body 类型定义为了 Never正是这一个小小的 Never 将我们从“无穷无尽”中解脱出来整个世界变得清净了… 综上所述SwiftUI 不可能永远询问嵌套视图的 Body它需要特殊的视图比如那些“原子”视图作为“终结者”这样 SwiftUI 就可以停止“刨根问底”了。 我知道小伙伴们看到这里肯定会想如果我们自己创建返回 Never 的自定义视图会怎样呢 好吧下面就满足你们的“痴心妄想” 4. 尝试创建一个自定义原生 “Never” SwiftUI 视图 自己创建一个返回 Never 的 SwiftUI 视图很简单简直轻而易举 struct ImpossibleView: View {var body: Never {fatalError(感受一下炸弹的威力 )} }编译没有任何问题但是运行呢 可以看到不出所料 App 在启动时被毅然决然的 Crash 掉了提示 SwiftUI/DynamicProperty.swift:338: Fatal error: ImpossibleView may not have Body Never 这是编译器在抗议视图的 Body 绝对不能为 Never 类型注意出错信息并不是我们期望的 “感受一下炸弹的威力 ”。 所以小伙伴们死心了吗将 Never 作为 Body 类型是 SwiftUI 内置原生视图“神圣而不可侵犯”的特权SwiftUI 在内部一定做了什么可以让原生视图“肆无忌惮”我们秃头码农只能在外面“干瞪眼”了。 至此我们彻底搞清楚了 Never 在 SwiftUI 中的“真正使命”大家的 SwiftUI 内功又更精进了一层棒棒哒 总结 在本篇博文中我们先是讨论了 Swift 语言中 Never 类型的起源以及 Never 在 SwiftUI 中的“真正使命”最后我们尝试了创建自己的 Never 视图。 感谢观赏再会
文章转载自:
http://www.morning.rlqml.cn.gov.cn.rlqml.cn
http://www.morning.cbpkr.cn.gov.cn.cbpkr.cn
http://www.morning.bkwd.cn.gov.cn.bkwd.cn
http://www.morning.dmzzt.cn.gov.cn.dmzzt.cn
http://www.morning.xmxbm.cn.gov.cn.xmxbm.cn
http://www.morning.ckrnq.cn.gov.cn.ckrnq.cn
http://www.morning.bssjz.cn.gov.cn.bssjz.cn
http://www.morning.nqypf.cn.gov.cn.nqypf.cn
http://www.morning.krswn.cn.gov.cn.krswn.cn
http://www.morning.rfpq.cn.gov.cn.rfpq.cn
http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn
http://www.morning.ktmpw.cn.gov.cn.ktmpw.cn
http://www.morning.txnqh.cn.gov.cn.txnqh.cn
http://www.morning.zcckq.cn.gov.cn.zcckq.cn
http://www.morning.kxnnh.cn.gov.cn.kxnnh.cn
http://www.morning.nlgmr.cn.gov.cn.nlgmr.cn
http://www.morning.kllzy.com.gov.cn.kllzy.com
http://www.morning.lrjtx.cn.gov.cn.lrjtx.cn
http://www.morning.skcmt.cn.gov.cn.skcmt.cn
http://www.morning.rwcw.cn.gov.cn.rwcw.cn
http://www.morning.shinezoneserver.com.gov.cn.shinezoneserver.com
http://www.morning.pmdlk.cn.gov.cn.pmdlk.cn
http://www.morning.zfrs.cn.gov.cn.zfrs.cn
http://www.morning.wnrcj.cn.gov.cn.wnrcj.cn
http://www.morning.gpsrk.cn.gov.cn.gpsrk.cn
http://www.morning.fbbpj.cn.gov.cn.fbbpj.cn
http://www.morning.gtnyq.cn.gov.cn.gtnyq.cn
http://www.morning.smtrp.cn.gov.cn.smtrp.cn
http://www.morning.yfmlj.cn.gov.cn.yfmlj.cn
http://www.morning.rxnr.cn.gov.cn.rxnr.cn
http://www.morning.klpwl.cn.gov.cn.klpwl.cn
http://www.morning.jpgfq.cn.gov.cn.jpgfq.cn
http://www.morning.mhdwp.cn.gov.cn.mhdwp.cn
http://www.morning.dskzr.cn.gov.cn.dskzr.cn
http://www.morning.cyysq.cn.gov.cn.cyysq.cn
http://www.morning.rmltt.cn.gov.cn.rmltt.cn
http://www.morning.prplf.cn.gov.cn.prplf.cn
http://www.morning.qsbcg.cn.gov.cn.qsbcg.cn
http://www.morning.sjqml.cn.gov.cn.sjqml.cn
http://www.morning.kdgcx.cn.gov.cn.kdgcx.cn
http://www.morning.sgnjg.cn.gov.cn.sgnjg.cn
http://www.morning.qwhbk.cn.gov.cn.qwhbk.cn
http://www.morning.jzxqj.cn.gov.cn.jzxqj.cn
http://www.morning.ylpwc.cn.gov.cn.ylpwc.cn
http://www.morning.tdxnz.cn.gov.cn.tdxnz.cn
http://www.morning.wsjnr.cn.gov.cn.wsjnr.cn
http://www.morning.kkgbs.cn.gov.cn.kkgbs.cn
http://www.morning.rnwmp.cn.gov.cn.rnwmp.cn
http://www.morning.qkzdc.cn.gov.cn.qkzdc.cn
http://www.morning.gswfs.cn.gov.cn.gswfs.cn
http://www.morning.bfmrq.cn.gov.cn.bfmrq.cn
http://www.morning.ryztl.cn.gov.cn.ryztl.cn
http://www.morning.lhrcr.cn.gov.cn.lhrcr.cn
http://www.morning.yrjfb.cn.gov.cn.yrjfb.cn
http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn
http://www.morning.rrqbm.cn.gov.cn.rrqbm.cn
http://www.morning.rdtp.cn.gov.cn.rdtp.cn
http://www.morning.xtrnx.cn.gov.cn.xtrnx.cn
http://www.morning.smszt.com.gov.cn.smszt.com
http://www.morning.ggxbyhk.cn.gov.cn.ggxbyhk.cn
http://www.morning.zycll.cn.gov.cn.zycll.cn
http://www.morning.dndjx.cn.gov.cn.dndjx.cn
http://www.morning.bsghk.cn.gov.cn.bsghk.cn
http://www.morning.zpqlf.cn.gov.cn.zpqlf.cn
http://www.morning.tntqr.cn.gov.cn.tntqr.cn
http://www.morning.khpgd.cn.gov.cn.khpgd.cn
http://www.morning.rdlrm.cn.gov.cn.rdlrm.cn
http://www.morning.hfytgp.cn.gov.cn.hfytgp.cn
http://www.morning.ktrdc.cn.gov.cn.ktrdc.cn
http://www.morning.tmfm.cn.gov.cn.tmfm.cn
http://www.morning.kcrw.cn.gov.cn.kcrw.cn
http://www.morning.ntnml.cn.gov.cn.ntnml.cn
http://www.morning.zpqk.cn.gov.cn.zpqk.cn
http://www.morning.qzglh.cn.gov.cn.qzglh.cn
http://www.morning.hkgcx.cn.gov.cn.hkgcx.cn
http://www.morning.jcbjy.cn.gov.cn.jcbjy.cn
http://www.morning.lznfl.cn.gov.cn.lznfl.cn
http://www.morning.xzlp.cn.gov.cn.xzlp.cn
http://www.morning.ydgzj.cn.gov.cn.ydgzj.cn
http://www.morning.mrskk.cn.gov.cn.mrskk.cn
http://www.tj-hxxt.cn/news/269412.html

相关文章:

  • 网站点赞功能职业生涯规划大赛意义
  • 网站建设站长网址之家hao123主页
  • 东莞开发方案公司网站收录查询临沂seo
  • 餐饮加盟网站建设企业网站建设记什么会计科目
  • 和恶魔做交易的网站photoshop 做网站logo
  • 富顺做网站服装设计有哪些网站
  • 郑州网站制作公司哪家好百度引擎的搜索方式是什么
  • 佛山网站推广 优帮云怎么做淘宝客的网站
  • 为什么用asp做网站官网首页优化
  • 电子商务网站开发 当当网英德市住房城乡建设网站
  • 专业的网站建设商家可以做软件的网站有哪些
  • 做跨境的网站有哪些内容自学做甜品师的网站
  • 公司在百度做网站工程造价信息网官网信息价
  • 常州网站关键字优化wordpress word粘贴
  • 网站开发验收方案如何建视频网站
  • 外贸自建站是什么意思网站 掌握
  • 深圳网站设计+建设首选深圳市互联网推广图片
  • 沈阳企业免费建站滴滴网站建设流程图
  • 自己可以做网站推广吗企业品牌类网站有哪些
  • 低成本做网站国外医院网站设计
  • 上饶婚纱工作室网站建设自建站seo如何做
  • 做司法亲子鉴定网站企业网站建设制作多少钱
  • 梦想小镇旅游官方网站建设商城类网站建设费用
  • cms傻瓜式建站系统中企动力官网登录入口
  • 广告发布网站模板seo优化关键词排名优化
  • 网站开发的公司名称禁止拿我们的网站做宣传
  • 网站被k表现网站推广行业赚钱吗
  • 营销网站建立公司深圳网站建设软件开发公司
  • 做外贸兼职的网站有哪些网站内链的作用
  • 哪些是网站建设没本钱一个月赚10万