首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

SwiftObjective-C混编在有赞移动实践

)中导入需要暴露给 Swift 模块 Objective-C 类,即可在 Swift 中访问相应 Objective-C 类和方法 Objective-C 访问 SwiftObjective-C...用 Swift Module 系统,需要用到 Objective-C 类用 import xxx 进行引用,即可在 Swift 中访问相应 Objective-C 类和方法 Objective-C...访问 SwiftObjective-C 类中导入 ProductName-Swift.h,即可访问 Swift 中暴露给 Objective-C 类和方法 由于我们目前业务比如商品模块、消息模块...5.5 Swift 调用 Objective-CSwift 模块文件中,用import xxx 形式进行模块引用,包括 Objective-C 二/三方库 5.6 Objective-C 调用...Swift Swift 类中将需要暴露给 Objective-C 模块引用类,用 public 申明 Swift 类中需要暴露给 Objective-C 方法要用关键字 @objc 在 Objective-C

2.1K20

46 道 Swift 常见面试题解

是什么意思 这两个都用于处理可抛出异常函数, 使用这两个关键字可以不用写 do catch. 区别在于, try?...由于 swift 是一个静态语言, 所以没有 Objective-C消息发送这些动态机制, dynamic 作用就是让 swift 代码也能有 Objective-C动态机制, 常用地方就是...KVO 了, 如果要监控一个属性, 则必须要标记为 dynamic ▐ 2.24 什么时候使用 @objc @objc 用途是为了在 Objective-CSwift 混编时候, 能够正常调用...Swift 代码....由于 OptionSet 要求有一个不可失败init(rawValue:) 构造器, 而 枚举无法做到这一点(枚举原始值构造器是可失败, 而且有些组合值, 是没办法用一个枚举值表示) struct

4.1K33

读 SnapKit 和 Masonry 自动布局框架源码

这三个问题看看 SnapKit 和 Masnory 分别是怎么做,正好也能够窥探下作者是如何利用 SwiftObjective-C 两个不同语言不同特性做到一致使用体验。...OptionSet 这里 ConstraintAttributes 是个 OptionSet,ConstraintAttributes 结构体来遵从 OptionSet 选项集合协议,为什么不用枚举呢...但是在 Swift枚举是没法将多个枚举选项组成一个值,比如 ConstraintAttributes 里 edges,size 和 center 等就是组合而成。...而 OptionSet 结构体使用了高效位域来表示。还有,OptionSet 继承于 ExpressibleByArrayLiteral,这样还能够使用数组字面量来生成选项集合。...precedencegroup 之间优先级关系在 Swift 源码 swift/stdlib/public/core/Policy.swift 文件里,在线看地址是:https://github.com

2.1K21

从预编译角度理解SwiftObjective-C及混编机制

编译器并不会对初始化构造器内部做检查,但它仍然会进行一些额外操作,这是什么意思呢?...不过我们应该知道 Swift 编译器在获取 Objective-C 代码过程中,并不是原原本本Objective-C API 暴露给 Swift,而是会做一些 ”Swift 化” 改动,例如下面的...这个转换过程并不是什么高深技术,它只是在编译器上硬编码,如果感兴趣,可以在 Swift 开源库中找到相应代码 - PartsOfSpeech.def。...第三步 - Target 内 Swift 代码是如何为 Objective-C 提供接口 前面讲了 Swift 代码是如何引用 Objective-C API,那么 Objective-C 又是如何引用...那么编译器自动生成 API 到底是什么样子,有什么特点呢? ?

2.1K31

译文: 低调奢华有内涵「Runtime」

Swift3.0不是要干死Objective-C了吗? 此言差矣。Swift虽是天天上头条,但是并不意味着已经完全把曾经和我们朝夕相处老相好干翻了。为什么非得要互怼,就不能一起愉快滴玩耍吗?...虽然Swift是用来取代Objective-C,但苹果依然继续维护Ovjective-C。主要改进了:可以更好地和Swift编译,并添加了很多新特性,如nullability、generics。...因为Runtime允许你访问很多Cocoa或者第三方库底层特性。 Objective-CRuntime究竟是什么?...上面这个陈述,表明Objective-C是动态干活儿,也就是说Objective-C是一门动态语言,与之相反,就是Swift、C++、Java等等这类语言。是什么因素决定了一门语言是静态还是动态?...感谢Objective-CRuntime,我们可以在「运行时」为这个对象添加缺失方法(方法实现为),这样就可以防止这个崩溃了。

95140

Swift 新语言开发「建议收藏」

——(博客园、新浪微博)葛布林大帝 */ 一、Welcome to Swift 1.关于Swift   Swift是一种用于iOS和OS X应用全新编程语言,它建立在最好C和Objective-C语言中...我们能够为Apple软件发展未来引入一种新语言。   对Objective-C开发人员来说Swift看起来非常熟悉。...它具有Objective-C命名參数可读性和动态对象模型力量,提供了无缝接入现有Cocoa框架和与Objective-C混编能力。...2.Swift概览 传统建议新语言第一个程序应该打印“Hello, World”在屏幕上。在Swift里这仅仅须要一行来完毕。   假设你在C或Objective-C语言编写过代码。...假设类型信息能够判断,你能够写一个数组为[]和一个字典为[;] ——比如。当你设置一个变量新值或參数传递给函数。

69830

(译)Objective-C 类属性

翻译自:Objective-C Class Properties 译者:Haley_Wong 由于Swift 3.0 出了太多令人兴奋新特性,人们很容易忽略 Objective-C小改动。...苹果展示Objective-C 很可能是为了提高Swift互操作性(译者注:互操作性主要是指OC代码与Swift代码相互转换),但是仍然很欢迎开发者用Objective-C来完成工作。...They are never synthesized. (23891898) 翻译如下: Objective-C 现在支持类属性了,与OC 中类属性对应Swift类型属性。...生成Swift接口 似乎,Objective-C 最近这些改进只是为了提高与Swift互操作性。Objective-C中新添加类型属性对应Swift中类变量用法。...为了允许它为nil,我们需要在Objective-C属性声明里添加一个 nullable标识。 我们Swift 变量也将会是可选类型

1.6K30

2021最受欢迎编程语言排行:苹果编程语言Objective-CSwift取代

新智元报道 来源:zdnet 编辑:LZY 【新智元导读】苹果公司Objective-C最终退出了Tiobe跟踪流行编程语言前20名,但是「恐龙」语言却获得了意想不到推动,Swift语言取代...Objective-C时代要来了。...Swift语言取代Objective-C时代来了? 根据Tiobe于2021年4月发行名单,Objective-C最终跌落了前20种最受欢迎语言。...苹果发布Swift以来已经有7年了,前7年Objective-C一直在Tiobe排行榜TOP 20 名单里。 当Swift于2014年发表时时,Objective-C在索引中排名第三。...Tiobe认为,即使Objective-C跌出前20名但仍然是受欢迎编程语言。 而Swift在4月Tiobe指数中排名第15位,低于2020年4月第11位。

92810

(译)openURL 在 iOS10中已弃用

这个弃用方法有一个要打开URL 参数,并且返回一个表示成功或者失败布尔值: // Objective-C - (BOOL)openURL:(NSURL*)url // Swift open func...canOpenURL(_ url: URL) -> Bool iOS 10中新方法: // Objective-C - (void)openURL:(NSURL*)url options:(NSDictionary...= nil) 它有三个参数: 要打开URL。 一个可选字典(可参考下面的实例)。传一个字典时,该方法效果与 openURL:一致。...iOS 10 下打开一个URL 这意味着如果你有一个只需要支持iOS 10以上App,也不关心options 参数和 完成状态,又不想 Xcode 报警告,你可以这样写: // Objective-C...为了覆写程序默认动作(默认这个key值是NO),我们需要创建一个字典,将对应key 设置为true(YES),然后将字典传给 options 参数: // Objective-C NSDictionary

2.5K10

Swift解读专题一——Swift2.2语言预览

,被赋值为数据或字典必须是类型确定,示例如下: //这样写会报错 //var errorArray = [] //创建数据集合 //方式一 var array:[Int] = [] var dic...值时,就代表条件为真,在Swift语言中则不同,if选择语句中条件必须为Bool类型值,因此,对于某些可以为值,Swift中提供了optional类型,这种类型相当于对其他实际类型进行了包装,如果有值...,则他拆包后为相应类型值,如果没有值,则为值nil。...在Swift中同样也有set和get方法,只是这里set和get方法与Objective-Cset和get方法有很大不同,Objective-Cget和set方法是截获了属性和存取过程,在其中加入额外其他操作...中枚举和C与Objective-C有很大差别,在Swift中,枚举也被作为一种数据类型来处理,其中可以添加函数方法。

2K20

Swift编译之SIL(Swift Intermediate Language)

SIL生成 // 将main.swift编译成SIL swiftc -emit-sil main.swift > main.sil // 将main.swift编译成SIL同时还原毫无规则命名 swiftc...@convention(objc_method):Objective-C 方法引用。 @convention(block):Objective-C引用。...import Builtin // Swift标准库模块,提供了Swift语言核心功能,包括标准类型、集合、字符串处理等 import Swift // Swift语言桥接模块,用于处理Swift...Person类Objective-C初始化方法 // @convention(objc_method):表示这是一个Objective-C方法 // @objc Person.init() sil private...drink()方法 // -> ():表示函数返回类型为元组,即函数不返回任何值 // : $@convention(method):这部分指定了函数调用约定,表明这是一个方法,在Swift中,方法调用与函数调用有一些不同之处

22341

Swift引用AFNetworking

什么是 CocoaPods 从介绍看,它是主要给 Objective-C 项目用,但是我们可以很容易地混合 Objective-CSwift 到同个项目,从而利用大量 CocoaPods 库和...结果刚写几句代码一堆类和变量找不到定义,而且坑爹是很多时候我们只能靠猜测,判断这些 Objective-C 定义转换成 Swift 定义是什么样子,用起来就是完全靠蒙!...Swift引用OC 那就是按照和 Objective-C 代码混编例子,添加 Bridging Header !...继续 一般说来,你在 Swift 项目新建 Objective-C时候,直接弹出是否创建 Bridge Header 窗口,点 YES 就是了,这时候一般多出来个 ProjectName-Bridging-Header.h...---- 手动添加Bridge Header 在项目的根目录添加一个头文件 假如就叫做 Bridge-Header.h 打开项目配置 -> Build Settings 搜索 swift 找到Objective-C

2K30

Swift解读专题三——基础运算符 原

str = "new value" 如果赋值运算符右边是一个元组,其也可以将元组进行分解赋值,示例如下: //对元组进行分解赋值 var (x,y) = (1,2) 与C与Objective-C不同...Sring类型数据是支持通过+运算符来进行拼接,示例如下: var newStr = "hello"+"world" Swift%运算符比Objective-C更加强大,其除了支持整数取余操作外...支持Objective-C中所有的比较运算符,比较运算符将会返回一个Bool类型值: 1==2 //等于比较 1<2  //小于比较 1>2  //大于比较 1 !...1:2 //如果1>2成立 a=1 a=2 六、聚合运算符         聚合运算符也是Swift语言中独有的一个运算符,其设计思路是基于更加方便使用Optional值目的。...对于Optional类型值,开发者一般会需要使用?进行可选拆包或者!进行强制拆包来获取其原始值,聚合运算符??提供了更加使用方式,示例如下: var Op1:String?

48420

Swift4.2:Nil cannot be assigned to type UnsafeMutablePointer与Optional chaining

由于直接抱着对其他语言认识来使用swift,这个问题苦恼了我很久,当我用关键词“swift 指针”搜索也没有得到有用信息,直到我发现swift一定要对可能为变量做标记——Optional(?...Optional Chaining(可选类型) https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html 在C和Objective-C...中不存在可选类型,可以也只能用传统方式处理值,Swift引入可选类型专为处理值可能为情况。...,他们主要区别是用?更优雅。。。...,如果运行中访问没有值变量,程序就会崩溃。 用?声明Optional变量在传值时有两种选择:使用时后面加??提供默认值以替代值可能为nil情况,或者使用时候后面加上!

1.6K20
领券