Swift

Swift 是一种支持多编程范式和编译式的编程语言,是用来撰写 macOS / OS X、iOS、watchOS 和 tvOS 的语言之一。

  • Total
  • 1157
话题聚合
  • Swift Static Libraries迁移实践

    Swift Static Libraries迁移实践

    in their Podfile in order to install pods that use Swift. Interop with Objective-C should just work. However, if your Swift pod depends on an Objective-C, pod you will need to enable "modular headers" (see below) for that Objective-C pod.简单来说就是: 从CocoaPods 1.5.0起,开发者不再限定于在他们的Podfile中使用use_frameworks...官方原文是:When CocoaPods first came out many years ago, it focused on enabling as many existing libraries as possible to be packaged as pods. That meant making a few tradeoffs, and one of those has to do with the way CocoaPods sets up header search paths. CocoaPods allowed any pod to import any other pod with un-namespaced quote imports. For example, pod B could have code that had a #import "A.h" statement, and CocoaPods will create build settings that will allow such an import to succeed. Imports such as these, however, will not work if you try to add module maps to these pods. We tried to automatically generate module maps for static libraries many years ago, and it broke some pods, so we had to revert. In this release, you will be able to opt into stricter header search paths (and module map generation for Objective-C pods).翻译过来是:当CocoaPods多年前首次问世时,它专注于使尽可能多的现有库被打包为pods...修改pod中由于启用了modular headers产生的编译错误: eg. 在业务库pod A中有文件A.m,A.m因需要使用基础库pod B中的一些类而使用了@import B,同时又引了自身pod的一个文件AA.h,在AA.h中又有 @import B或者 #import这样的代码。
  • 宏碁蜂鸟Swift 7笔记本开启预售:8.98mm超薄机身 11999元

    宏碁蜂鸟Swift 7笔记本开启预售:8.98mm超薄机身 11999元

    宏碁蜂鸟Swift 7最大的亮点是“薄”,其机身厚度仅有8.98mm,官方介绍每1mm的缩减都是宏碁对设计和工业制造的顶峰挑战...同时宏碁蜂鸟Swift 7指纹识别及触控板采用CNC钻石切割工艺,精度可达0.01mm,闪耀的锋芒与黑色机身带来奢华质感...核心配置上,宏碁蜂鸟Swift 7采用14英寸显示屏,凭借微边框设计使得14英寸屏幕融入13英寸机身中,搭载英特尔i7-7Y75处理器,配备8GB内存+256GB PCIe SSD。
    8 天前
  • Swift封装-滑出式导航栏

    Swift封装-滑出式导航栏

    [DWStar]?{????????return?[????????????DWStar(title:?"林志玲",?creator:?"Dwyane",?image:?UIImage(named:?"ID-100113060")),????????????DWStar(title:?"张歆艺",?creator:?"Dwyane",?image:?UIImage(named:?"ID-10022760")),????????????DWStar(title:?"李连杰",?creator:?"Dwyane",?image:?UIImage(named:?"ID-10091065")),????????????DWStar(title:?"周润发",?creator:?"Dwyane",?image:?UIImage(named:?"ID-10047796")),????????????DWStar(title:?"舒淇",?creator:?"Dwyane",?image:?UIImage(named:?"ID-10092572")),????????????DWStar(title:?"鹿晗",?creator:?"Dwyane",?image:?UIImage(named:?"ID-10041194")),????????????DWStar(title:?"黄晓明",?creator:?"Dwyane",?image:?UIImage(named:?"ID-10017782")),????????????DWStar(title:?"李赛凤",?creator:?"Dwyane",?image:?UIImage(named:?"ID-10091745")),????????????DWStar(title:?"赵丽颖",?creator:?"Dwyane?Ratcliff",?image:?UIImage(named:?"ID-10056941")),????????????DWStar(title:?"周星驰",?creator:?"Dwyane",?image:?UIImage(named:?"ID-10019208")),????????????DWStar(title:?"杜海涛",?creator:?"Dwyane",?image:?UIImage(named:?"ID-10011404"))????????]????}? ?创建DWCenterViewControllerDelegate,并且创建协议方法://创建协议?optional:类似oc的可选@objcprotocol?DWCenterViewControllerDelegate?{????@objc?optional?func?toggleLeftPanel()??//切换左边的容器????@objc?optional?func?collapseSidePanels()?//折叠侧边的容器}在DWCenterViewController.swift的actorsTapped点击方法调用协议方法toggleLeftPanel,如下:@IBAction?func?actorsTapped(_?sender:?Any)?{????//左边点击事件????delegate...DWSidePanelViewController????}????}在viewDidLoad添加如下://添加中间控制器并显示centerViewController?=?UIStoryboard.centerViewController()centerViewController.delegate?=?self//将centerViewController包装在导航控制器中centerNavigationController?=?UINavigationController(rootViewController:?centerViewController)//加入centerViewcontroller的视图view.addSubview(centerNavigationController.view)//加入centerViewcontroller的视图控制器addChildViewController(centerNavigationController)centerNavigationController.didMove(toParentViewController:?self)实现协议方法(添加左侧容器一起动画的发生代码):extension?DWContainerViewController:?DWCenterViewControllerDelegate?{?}在协议方法中,添加func?toggleLeftPanel()?{????//如果当前状态:左边为展开????let?notAlreadyExpanded?=?(currentState...=?.leftPanelExpanded)????if?notAlreadyExpanded?{????????addLeftPanelViewController()?//添加左边容器????}????//左边容器展开的动画????animateLeftPanel(shouldExpand:?notAlreadyExpanded)}//折叠侧边容器func?collapseSidePanels()?{????switch?currentState?{????case?.leftPanelExpanded:????????toggleLeftPanel()????default:????????break????}}//左边的VCfunc?addLeftPanelViewController()?{//guard语句判断其后的表达式布尔值为false时,才会执行之后代码块里的代码,如果为true,则跳过整个guard语句????guard?leftViewController?==?nil?else?{?return?}????if?let?vc?=?UIStoryboard.leftViewController()?{????????vc.animals?=?DWStar.allActors()????????addChildSidePanelController(vc)????????leftViewController?=?vc????}}func?addChildSidePanelController(_?sidePanelController:?DWSidePanelViewController)?{????sidePanelController.delegate?=?centerViewController????view.insertSubview(sidePanelController.view,?at:?0)????addChildViewController(sidePanelController)????sidePanelController.didMove(toParentViewController:?self)}//右边的VCfunc?addRightPanelViewController()?{}func?animateLeftPanel(shouldExpand:?Bool)?{????if?shouldExpand?{????????currentState?=?.leftPanelExpanded????????animateCenterPanelXPosition(targetPosition:?centerNavigationController.view.frame.width?-?centerPanelExpandedOffset)????}?else?{????????animateCenterPanelXPosition(targetPosition:?0,?completion:?{?(_)?in????????????self.currentState?=?.bothCollapsed????????????self.leftViewController。
  • 欧洲拟建的SWIFT替代品将无法及时就绪

    欧洲拟建的SWIFT替代品将无法及时就绪

    为应对美国重新实施的对伊制裁,欧洲各国正就一个保障与伊朗贸易的特殊目的载体进行谈判,但各方尚未就关键细节达成一致...欧洲国家尚未对何时启动该载体设定正式的最后期限,而一些外交官曾希望能及时准备好该渠道,以应对美国重新实施的对伊制裁...特朗普(Trump)政府将在周一晚些时候将更多伊朗银行添加进其制裁名单,迫使国际金融通讯系统“环球银行金融电信协会”(SWIFT)选择是否与美保持一致、并将这些伊朗银行从其全球跨境支付网络中剔除掉。
    2018-11-05
  • 【基本功】深入剖析Swift性能优化

    【基本功】深入剖析Swift性能优化

    总结Swift提供了更灵活的Struct,用以在内存、引用计数、方法分派等角度去进行性能的优化,在正确的时机选择正确的数据结构,可以使我们的代码性能更快更安全...我们来借助具体的示例进行进一步了解://?Protocol?Types//?The?Existential?Container?in?actionfunc?drawACopy(local?:Drawable)?{?local.draw()}let?val?:Drawable?=?Point()drawACopy(val)在Swift编译器中,通过Existential Container实现的伪代码如下://?Protocol?Types//?The?Existential?Container?in?actionfunc?drawACopy(local?:Drawable)?{?local.draw()}let?val?:Drawable?=?Point()drawACopy(val)//existential?container的伪代码结构struct?ExistContDrawable?{?var?valueBuffer:(Int,?Int,?Int)?var?vwt:ValueWitnessTable?var?pwt:DrawableProtocolWitnessTable}//?drawACopy方法生成的伪代码func?drawACopy(val:ExistContDrawable)?{?//将existential?container传入?var?local?=?ExistContDrawable()??//初始化container?let?vwt?=?val.vwt?//获取value?witness?table,用于管理生命周期?let?pwt?=?val.pwt?//获取protocol?witness?table,用于进行方法分派?local.type?=?type??local.pwt?=?pwt?vwt.allocateBufferAndCopyValue(&...bar(local)?//在调用内部bar方法时,会使用foo已经绑定的变量类型Point,可以看到,泛型T在这里已经被降级,通过类型Point进行取代泛型方法调用的具体实现为:同一种类型的任何实例,都共享同样的实现,即使用同一个Protocol Witness Table。
    2018-11-02
  • Swift 掌控Moya的网络请求、数据解析与缓存

    Swift 掌控Moya的网络请求、数据解析与缓存

    MoyaMapper是基于Moya和SwiftyJSON封装的工具,以Moya的plugin的方式来实现间接解析,支持RxSwiftGitHub: MoyaMapper详细的使用请查看手册 https://MoyaMapper.github.io特点支持json 转 Model 自动映射 与 自定义映射无视 json 中值的类型,Model 中属性声明的是什么类型,它就是什么类型支持 Data 字典 JSON json字符串 Model 互转插件方式,全方位保障Moya.Response,拒绝各种网络问题导致 Response 为 nil,将各式各样的原因导致的数据加载失败进行统一处理,开发者只需要关注 Response可选 - 支持数据随意缓存( JSON 、 Number 、String、 Bool、 Moya.Response )可选 - 支持网络请求缓存数据解析一、插件注入附:插件 MoyaMapperPlugin 的详细使用1、定义适用于项目接口的 ModelableParameterType//?statusCodeKey、tipStrKey、?modelKey?可以任意指定级别的路径,如:?"error>...MMCache.shared.fetch`XXX`Cache(key:?String,?cacheContainer:?MMCache.CacheContainer?=?.RAM)缓存成功会返回一个 Bool 值,这里可不接收XXX 所支持类型Bool-Float-Double-String-JSON-Modelable[Modelable]Moya.Response-IntUIntInt8UInt8Int16UInt16Int32UInt32Int64UInt64其中,除了 Moya.Response 之外,其它类型皆是通过 JSON 来实现缓存所以,如果你想清除这些类型的缓存,只需要调用如下方法即可@discardableResult...statusCode?--?200这里的 230 就是 MMStatusCode.cache.rawValueCocoaPods默认安装MoyaMapper默认只安装Core下的文件pod?'MoyaMapper'RxSwift拓展pod?'MoyaMapper/Rx'缓存拓展pod?'MoyaMapper/MMCache'Rx缓存pod?'MoyaMapper/RxCache'作者:LinXunFeng链接:https://www.jianshu.com/p/d0463a042543? ? ? ? ??https://juejin.im/user/58f8065e61ff4b006646c72d/posts。
    2018-10-29
  • Swift 优雅的适配大小

    Swift 优雅的适配大小

    在日??⒅谐3;岫陨璞附幸欢ǖ氖逝?,为了方便在多个项目里统一管理和使用,所以封装并开源了SwiftyFitsize这个库,可用于适配视图及字体大小GitHub: SwiftyFitsize最终的效果如下图所示效果图安装使用Cocoapods安装,或手动拖入项目pod?'SwiftyFitsize'使用SwiftyFitsize在默认状况下所使用的参照宽度为iphone6的375如果设计图所选用设备的宽度与默认值不同,可以在AppDelegate下初始化所参照的宽度SwiftyFitsize.reference(width:?414)下面列出一些设备对应的分辨率,方便查找设备逻辑分辨率(point)设备分辨率(pixel)SE320x568640x11366(S)/7/8375x667750x13346(S)+/7+/8+414x7361080x1920X(S)375x8121125x2436XR414x896828x1792XS Max414x8961242x2688使用也是非常方便的,只需要在Number、UIFont、CGPoint、CGSize、UIEdgeInsetsMake这些类型的值后面加上~即可100~...CGSize(width:?100,?height:?100)~...UIEdgeInsetsMake(10,?10,?10,?10)~注:~请不要相互嵌套使用,如CGPoint(x:?10~,?y:?10~)~作者:LinXunFeng链接:https://www.jianshu.com/p/d0463a042543? ? ? ? ??https://juejin.im/user/58f8065e61ff4b006646c72d/posts。
    2018-10-25
  • 苹果跟法国教育机构Simplon合作推广Swift

    Simplon 的网站信息显示,其使命是“为弱势群体提供免费的数字培训,帮助他们在数字领域找到工作...根据外媒 Cult of Mac 的报道,苹果正与法国教育机构 Simplon 合作,向学生教授 Swift 编程语言...苹果 CEO 蒂姆·库克在推特上写道:“很自豪地宣布,我们与法国的 Simplon 合作推出了新的培训计划,将向大家传授 Swift 编程的基础知识。
  • 从零开始实现一个APNG Decoder(Swift, iOS)

    从零开始实现一个APNG Decoder(Swift, iOS)

    不同的图片格式的文件有不同的压缩算法,不同的数据组织结构.APNG也是一种文件格式,他是基于PNG扩展出来的一种类似GIF的动态图片格式.不同于GIF的是他是存在Alpha通道的,解析后就是一帧一帧的PNG图片.既然APNG是PNG的扩展,那我们首先得搞清楚PNG的文件结构.图中所画就是PNG的数据结构PNG signature: PNG图片的签名,32字节,值是固定的: '.PNG'(89 50 4E 47 0D 0A 1A 0A)IHDR、Other Chunks、IDAT、Other Chunks、IEND都被统一成一种结构,称为Chunk图中所示Chunk的结构4个字节表示长度,4个字节表示Chunk的类型,length个字节表示chunk 的数据,CRC4个字节用于校验数据IHDR: 图片的元数据Other Chunks: 在这里我暂且这样称呼,这里表示有一个或者多个连续的Chunk图中所示就是Other Chunks可能的类型值IDAT:图片数据IEND:结束Chunk有了以上的完整的PNG数据就可以被标准的PNG Decoder解码,iOS中我使用CGDataProviderCGImageSourceCreateWithDataProvider来解析并得到数据PNG的数据结构搞清楚了,我们就可以来撸一撸APNG的数据结构了APNG的第一帧就是一个PNG,只是Other Chunks里面多了两种在PNG中没有的Chuck,分别是acTL与fcTL...}这一部分是以提取第一帧为模板,以方便后续拼接每一帧为一个完整的PNG结构for?var?i?in?0..从chunks中分离出图片帧的原始数据每一帧由一个fcTL与一个IDAT或者fdAT组成要组成完整的PNG结构就要用到我们前面解析出来的PNG signature与other chunks还有IEND了解码的第一步就是把每一帧组织成一个完整的PNG结构,然后使用iOS的Core Graphics框架来解码并生成UIImagefunc?getPNGData(with?frame:?BerryAPNGFrame,?fileData?data:?Data)?->...let?drawRect?=?CGRect(x:?CGFloat(frame.fctl.x_offset),?y:?CGFloat(offsetY),?width:?CGFloat(frame.fctl.width),?height:?CGFloat(frame.fctl.height))fcTL中有两个非常重要的属性,用于控制下一帧画图的操作var?dispose_op:?UInt8。
    2018-10-23
  • 微软与SWIFT达成合作 共推基于Azure的云支付解决方案

    微软与SWIFT达成合作 共推基于Azure的云支付解决方案

    在全球金融服务盛会 Sibos 2018 上,微软与 SWIFT 宣布了最新的合作 —— 基于 Azure 的云支付解决方案...这项“基础设置即服务”(IaaS)的概念验证,旨在宣传 Microsoft Azure 在本地云环境下的业务性能,称之能够快速、高效、安全地,应用于银行、企业、服务机构、以及其它支付商...SWIFT to use Microsoft Azure for payments transfers(via)报道称,微软财务部门正在对这一概念进行验证。
    2018-10-23
  • Swift 团队宣布将开发一个新的基于 LSP 的语言服务

    Swift 团队宣布将开发一个新的基于 LSP 的语言服务

    Swift 开发团队近日在论坛宣布将为 Swift 和 C 系列语言启动一个基于 LSP(语言服务器协定)的开源项目,项目库计划在一个月内生成...这个新的基于 LSP 的语言服务将支持:Swift 源文件的语义功能(代码完成、高亮显示等)...开发团队还将对 Xcode 进行必要的调整以使用这个新的语言服务。
    2018-10-22
  • 编译开源 Swift Foundation 库

    编译开源 Swift Foundation 库

    # git clone https://github.com/iachievedit/swift-corelibs-foundation# export PREBUILT_ROOT=/root/workspace/Swift-3.0-Pi3-ARM-Incremental/build/buildbot_linux/# SWIFTC=$PREBUILT_ROOT/swift-linux-armv7/bin/swiftc CLANG=$PREBUILT_ROOT/llvm-linux-armv7/bin/clang SWIFT=$PREBUILT_ROOT/swift-linux-armv7/bin/swift SDKROOT=$PREBUILT_ROOT/swift-linux-armv7 BUILD_DIR=build ./configure Debug# /usr/bin/ninja...[290/290] Link: build/Foundation/libFoundation.so首先,我们将环境变量 PREBUILT_ROOT 设置到预构建 Swift 及相关工具所在的位置,还可以在下一步操作前配置 ./configure 为 Debug 模式(你也可以配置为 Release)...# export PREBUILT_ROOT=/root/workspace/Swift-3.0-Pi3-ARM-Incremental/build/buildbot_linux/# SWIFTC=$PREBUILT_ROOT/swift-linux-armv7/bin/swiftc CLANG=$PREBUILT_ROOT/llvm-linux-armv7/bin/clang SWIFT=$PREBUILT_ROOT/swift-linux-armv7/bin/swift SDKROOT=$PREBUILT_ROOT/swift-linux-armv7 BUILD_DIR=build ./configure Debug -DXCTEST_BUILD_DIR=$PREBUILT_ROOT/xctest-linux-armv7# /usr/bin/ninja test[4/4] Building Tests**** RUNNING TESTS ****execute:LD_LIBRARY_PATH= build/TestFoundation/TestFoundation**** DEBUGGING TESTS ****execute:LD_LIBRARY_PATH= lldb build/TestFoundation/TestFoundation运行测试需要为 LD_LIBRARY_PATH 提供两个路径:libXCTest.so 共享库和“library under test”的路径...# LD_LIBRARY_PATH=./build/Foundation:$PREBUILT_ROOT/xctest-linux-armv7 ./build/TestFoundation/TestFoundation...Test Suite 'All tests' passed at 03:16:45.315 Executed 483 tests, with 0 failures (0 unexpected) in 37.621 (37.621) seconds结束语需要强调的是使用这种技术,你需要一个“构建工具链”,它包含 Swift,clang 和 llvm。
    2018-10-22
  • Swift 类型擦除

    Swift 类型擦除

    () ->...IteratorImpl { return IteratorImpl(seq.makeIterator()) }}我们需要一种方法来实际创建这些东西: 对 MAnySequence 添加一个静态方法,该方法创建一个 MAnySequenceImpl 实例,并将其作为 MAnySequence 类型返回给调用者...当需要将小部分功能包装为更大类型的一部分时,这种基于函数的类型擦除方法特别实用,这样做就不需要有单独的类来实现被擦除类型的这部分功能了。
    2018-10-11
  • iOS如何开始单元测试(swift版)

    iOS如何开始单元测试(swift版)

    XCTAssertEqualWithAccuracy(a1,?a2,?accuracy,?format...)判断相等,(double或float类型)提供一个误差范围,当在误差范围(+/-accuracy)以内相等时通过测试...XCTAssertNoThrowSpecific(expression,?specificException,?format...)异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过...XCTAssertNoThrowSpecificNamed(expression,?specificException,?exception_name,?format...)异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过作者:何以消摇链接:https://www.jianshu.com/p/be32739d8aae。
    2018-10-09
  • 微软用Win10推广SwiftKey输入法:主打剪贴板手机电脑云同步

    举个栗子,当你在PC复制文本内容之后就会复制在云剪贴板中,用户在其它设备上可以访问这些内容...不过微软似乎提供了别的方法让用户提前尝鲜,近日,据外媒报道,在10月份的RTM更新中,微软会显示一个弹窗,推荐用户下载微软SwiftKey安卓键盘APP,并特别标明:“获取应用程序以将剪贴板项目同步到您的手机”...弹窗会将用户引导到即将推出的一个页面,用户可以在该页面下载Beta版本的SwiftKey安卓键盘,遗憾的是,目前微软尚未提到iOS版本何时添加该功能。
  • TIOBE 10 月排行榜:C++夺回前三 Swift 进入前十???????

    TIOBE 10 月排行榜:C++夺回前三 Swift 进入前十???????

    在 9 月份的 TIOBE 编程语言排行榜中,Python 超越...不过在最新的 10 月编程语言排行榜中,刚被挤下 TOP 3 的 C++? 反超 Python,以 0.44% 的微弱优势重新夺回第三的宝座..., SPARK, SPSS, Tex, TypeScript, Vala/Genie, Verilog, VHDL历史排名(1988-2018/每5年)以下排名位次取决于 12 个月的平均值:编程语言名人堂历届“年度编程语言”获奖名单如下图所示,该奖项授予一年中评分最高的编程语言:TIOBE 编程社区指数(The TIOBE Programming Community index)是编程语言流行度的指标,该榜单每月更新一次,指数基于全球技术工程师、课程和第三方供应商的数量。
    2018-10-08
  • SwiftKey滑动键盘终于抵达Windows 10设备

    SwiftKey滑动键盘终于抵达Windows 10设备

    对于使用英文键盘的用户来说,今天发布的一系列微软新闻中最好一条是确认了流行的SwiftKey键盘功能最终将通过Windows 10 October Update进入Windows 10设备...Windows 10上缺少SwiftKey对微软粉丝来说一直是一种遗憾,因为它允许用户只需在键盘上拖动手指就能输入单词,而且已经在Windows手机上工作多年,在Windows Phone 8和Windows 10 Mobile上进行了良好的尝试,然而它向Windows 10 PC的推出已经延迟了很多次...随着本月的10月更新,Windows手机键盘和iOS和Android上的SwiftKey键盘的粉丝应该感到高兴,现在在Windows 10触摸键盘上打字应该会快得多。
    2018-10-03

相关链接

必威体育 www.langqinqh.com 为你发现的专属好站