首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

objc[29733]:Swift类上的Swift类扩展和类别不允许在IOS12.2上运行+load方法Xcode10.2

objc[29733]: Swift class extensions and categories are not allowed to run +load methods on iOS 12.2 with Xcode 10.2.

在iOS 12.2上,使用Xcode 10.2时,不允许在Swift类的扩展和类别中运行+load方法。

解释: 在Objective-C中,可以使用+load方法在类加载时执行一些初始化操作。然而,在Swift中,由于其不同的运行时机制,不再支持在类的扩展和类别中使用+load方法。

这个限制是由于Swift的运行时机制与Objective-C的运行时机制不同所导致的。在Swift中,类的初始化是在实例化时进行的,而不是在类加载时。因此,Swift不提供在类的扩展和类别中运行+load方法的功能。

解决方法: 如果你需要在类加载时执行一些初始化操作,可以考虑将这些操作放在类的初始化方法中,或者使用其他适合的方式来实现你的需求。

推荐的腾讯云相关产品和产品介绍链接地址: 腾讯云提供了丰富的云计算产品和服务,可以满足各种需求。以下是一些相关产品和介绍链接:

  1. 云服务器(CVM):提供弹性、可靠的云服务器实例,支持多种操作系统和应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  2. 云数据库MySQL版(CDB):提供高性能、可扩展的云数据库服务,适用于各种规模的应用。详情请参考:https://cloud.tencent.com/product/cdb_mysql
  3. 云原生容器服务(TKE):提供高度可扩展的容器化应用管理平台,简化容器部署和管理。详情请参考:https://cloud.tencent.com/product/tke
  4. 人工智能平台(AI Lab):提供丰富的人工智能服务和工具,包括图像识别、语音识别、自然语言处理等。详情请参考:https://cloud.tencent.com/product/ailab
  5. 物联网(IoT Hub):提供全面的物联网解决方案,包括设备接入、数据管理、远程控制等功能。详情请参考:https://cloud.tencent.com/product/iothub

请注意,以上推荐的产品和链接仅为示例,腾讯云还提供了更多的云计算产品和服务,具体选择应根据实际需求进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift 派发机制

消息派发 消息派发是动态性最强派发方式,也是性能最差一种方式;方法调用包装成消息,发给运行时(相当于中间人),运行时会找到对象,对象会保存数据信息,或通过父查找,直到命中执行,如果没找到方法...dynamic 修饰方法 Class 不被 @objc 修饰扩展方法及被 final 修饰方法 声明作用域中方法 dynamic 修饰方法或者被 @objc 修饰扩展方法 Protocol...扩展方法 声明作用域中方法 @objc 修饰方法或者被 objc 修饰协议中所有方法 Value Type 所有方法 无 无 其他 全局方法,staic 修饰方法;使用 final 声明里面的所有方法...;使用 private 声明方法属性会隐式 final 声明; 通过该表格你大概就可以理解一下 Swift 语言中一些限制了: extension 中定义方法如果想 overrite,需要在方法加上...Swift 派发优化 内联优化 Swift 编译时直接派发方式基础还可以进行优化,如函数内联。

95220

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

)中导入需要暴露给 Swift 模块 Objective-C ,即可在 Swift 中访问相应 Objective-C 方法 Objective-C 访问 Swift Objective-C...访问 Swift Objective-C 中导入 ProductName-Swift.h,即可访问 Swift 中暴露给 Objective-C 方法 由于我们目前业务比如商品模块、消息模块....mm 文件中,Objective-C 代码 C++ 代码都可以正常编译运行。...Swift Swift 中将需要暴露给 Objective-C 模块引用,用 public 申明 Swift 中需要暴露给 Objective-C 方法要用关键字 @objc Objective-C...中引用 ProductName-Swift.h 头文件即可引用暴露给 Objective-C Swift 方法 5.7 pod spec lint 验证发布 pod spec lint

2.1K20

干货 | 一波N折携程酒店Swift-Objc混编实践

但这个设置似乎和我们之前理解ABI稳定有点冲突,ios12.2之前版本因为系统没有内置Swiftruntime动态库,所以需要在app中打入Swift runtime。...,如: #import 就可以Objc项目里引用Swift方法了,试了一下,xcode里很顺利地跑了起来。...虽然设计之初我们原则约定了只允许ojbc引用swift不允许被反过来引用,但很快我们就不得不推翻了这个约定。...而Module机制中一个很重要文件就是modulemap,它是module和头文件之间产生联系关键,是用来描述头文件module结构逻辑对应关系。...由于篇幅主题原因,本文就止步于探讨将Swift集成到Objc工程中一些问题经验。

1.4K31

iOS学习--NSObject详解

大意是:这个是大多说 Objective-C, 为子类提供了访问运行时系统基本接口,并使子类具有 Objective-C对象基本能力....二、NSObject.h方法分类 1.加载及初始化方法 2.消息发送方法 3.复制方法 4.判断方法 5.内存管理方法 2.1、加载及初始化方法 /** 运行时加载或分类调用该方法, 每个只会调用一次...*/ + (void)load; /** 实例化使用前需要先初始化, 一个调用一次, 如果子类没有实现该方法则会调用父方法 */ + (void)initialize; /** 初始化对象...; } /** 运行时加载或分类调用该方法, 每个只会调用一次 */ + (void)load; /** 实例化使用前需要先初始化, 一个调用一次, 如果子类没有实现该方法则会调用父方法...:(struct _NSZone *)zone OBJC_ARC_UNAVAILABLE; /** 指定内存空间复制为可变对象, MRC下使用 */ + (id)mutableCopyWithZone

1K20

iOS-loadinitialize方法

通过实例对象,我们就可使用实例方法、类属性了 从上面的步骤我们也大概了解到loadinitialize调用时机了,下面来详细说一下 +(void)load App启动后立即加载,此时就会调用该函数...,所以它调用时机很早,甚至main函数之前 两个不相关加载顺序是随机 如果一个没有load方法,则该类就不会调用load方法,它不会去继承父load 如果两个有依赖关系,则优先加载被依赖...如果两个是继承关系,则优先加载父,再加载子类 Categoryload也会收到调用,但顺序load调用之后 所以load方法中,我们不需要调用super,因为加载子类之前肯定加载完成父了...,即父load方法肯定已经执行过了,同时这里也有一个缺点,因为load方法执行时,运行环境还不确定,如果我们load函数中使用了其它不相关,我们并不能保证该类已经加载完成且可用,甚至有时还要自己负责做...方法时,首次使用子类时还会调用一次父方法,它与load方法还有不同是,initialize调用时,运行环境基本健全(main函数之后,我们要保证load方法中没有使用该类,不然initialize

91110

【自问自答】关于 Swift 几个疑问

继承自NSObjectSwift,其继承自父方法具有动态性,其他自定义方法、属性需要加dynamic修饰才可以获得动态性。...4 中, 加 dynamic 同时,也必须加 @objc -- 即不允许单独加 dynamic 标记....如果是模块B中,通过 extension 覆盖模块Aprivate 方法.然后模块 C 中同时引入了模块 A B,此时模块C中类似的函数调用,会是哪个模块方法实现生效?...使用 extension 扩展其他模块中定义时,最好还是给自己扩展方法加上特定前缀,不然第三方模块万一暴露同名方法,自己代码就彻底跪了....另外,参考 objc 中block 行为,我尝试搜索相关 swift 中 栈(stack) block 相关信息.如果 closure 也区分栈堆,倒是还可以勉强解释.不过,并没有相关信息,而且

1.4K60

Swift 三天上手项目,学习经验总结!

字面量 - 运算符 - 条件语句 - 循环 - 字符串 - 字符 - 数组 - 字典 - 函数 - 闭包 - 枚举 - 结构体 - - 属性 - 方法 - 下标脚本 - 继承 - 构造过程 - 析构过程...了解语法直接--仿写项目 这里推荐两个非常不错项目: 有妖气漫画 现在已经更新适配Xcode10.2(Swift5) 90%精仿原版有妖气漫画(登录,充值等涉及版权或者会员等功能均不作实现) 原版APP...中加入自己一些优化效果 原版基础适配iOS11及iPhone X 三方框架,感谢 SnapKit, SnapKitExtend, Then, Moya, Alamofire, HandyJSON,..., UINavigation-SXFixSpace-Swift 修正导航栏按钮iOS11中位置偏移问题 自定义各种布局控件 二次封装各种控件及布局框架等 各种基础,三方扩展 SwiftOC...总之这部分算是一个在线推荐模块 其次,是分类模块 也算是一个在线推荐模块 但是其会更加细化类别 我们可以把这两个模块合并在一起,也可以按照固有样式分开,这个可以开发时候进行调整 当然首页分类都会有一个搜索入口

88900

iOS面试题-Swift

文件即可, Swift如果需要被OC调用,需要使用@objc方法或者属性进行修饰(class) 结构体(struct) 有什么区别?...class 有以下功能,struct 是没有的:* class可以继承,子类可以使用父特性方法 类型转换可以在运行时检查和解释一个实例对象 class可以用 deinit来释放资源 一个可以被多次引用...,其修饰可以方法,可以在任意 模块中被访问重写. public: 权限仅次于 open, open 唯一区别是: 不允许其他模块进行继承、重写 internal: 默认权限, 只允许在当前模块中访问...协议和方法前面添加 @objc,然后方法前面添加 optional关键字,改方式实际是将协议转为了OC方式@objc protocol someProtocol { @objc optional...使用扩展(extension),来规定可选方法, swift 中,协议扩展可以定义部分方法默认实现 convenience只提供一种方便初始化器,必须通过一个指定初始化器来完成初始化[obj iskinOfClass

3.5K40

Swift:一天学会,三天写项目

字面量 - 运算符 - 条件语句 - 循环 - 字符串 - 字符 - 数组 - 字典 - 函数 - 闭包 - 枚举 - 结构体 - - 属性 - 方法 - 下标脚本 - 继承 - 构造过程 - 析构过程...了解语法直接--仿写项目 这里推荐两个非常不错项目: 有妖气漫画 现在已经更新适配Xcode10.2(Swift5) 90%精仿原版有妖气漫画(登录,充值等涉及版权或者会员等功能均不作实现) 原版...APP中加入自己一些优化效果 原版基础适配iOS11及iPhone X 三方框架,感谢 SnapKit, SnapKitExtend, Then, Moya, Alamofire, HandyJSON..., UINavigation-SXFixSpace-Swif 修正导航栏按钮iOS11中位置偏移问题 自定义各种布局控件 二次封装各种控件及布局框架等 各种基础,三方扩展 Swift...总之这部分算是一个在线推荐模块 其次,是分类模块 也算是一个在线推荐模块 但是其会更加细化类别 我们可以把这两个模块合并在一起,也可以按照固有样式分开,这个可以开发时候进行调整 当然首页分类都会有一个搜索入口

92220

Swift学习总结

17、swift不允许直接用索引下标[]来访问字符串中指定字符,因为swift无法不遍历前面每个字符情况下知道指定索引对应于哪个Unicode标量,该索引必须要先获取到start索引,再通过编译计算到指定索引...7、枚举Enum语法多了case关键字,支持一系列类型,包括所有的内建数值类型字符串。swift中,方法可以枚举关联,即在枚举中添加方法。...10、与结构体区别之一,支持继承,重载父方法时候要添加override关键字 Swift有个新特性,可以禁止子类重载某个函数,该函数增加final关键字。...初始化方法中允许给常量赋值,其它方法不允许。 16、初始化增加了两个概念:指定初始化便捷初始化,便捷初始化需要在init前加上关键字convenience。...6、swift新特性,除了枚举、结构、支持extension扩展,协议也可以进行扩展,可以添加有实现计算属性方法,只是不能添加存储属性。

2.9K20

iOS工程师必看 20 道 面试题

内存中,引用类型诸如堆(heap),而值类型诸如结构体实在栈(stack)上进行存储操作。...Swift文件中若要规定固定方法或属性暴露给Objective-C使用,可以方法或属性前加上@objc来声明。...先给出两种解决方案: 协议和方法前都加上 @objc 关键字,然后再在方法前加上 optional 关键字。该方法实际是把协议转化为Objective-C方式然后进行可选定义。...Swift中,协议扩展(protocol extension)可以定义部分方法默认实现,这样这些方法实际调用中就是可选实现了。...,然后协议扩展(protocol extension)中添加shake方法 分析这三种方法自定义中添加shake方法扩展性不好。

3.6K40

iOS_Swift函数派发机制

优点:可扩展 缺点:速度慢,编译器对某些含有副作用函数无法优化 1.3 objc_msgSend 基于 Objc RunTime 实现,沿着实例 isa 指针进行查找,找不到最后还有3次拯救机会。...不只可以通过 swizzling 来改变,甚至可以用 isa-swizzling 修改对象继承关系,可以面向对象基础实现自定义派发 确定:速度最慢 ---- 2.派发类型识别 2.1 Struct...其他函数:以 Table 机制来查找调用。 2.3 Class - Extension extension 中方法属性无法继承重写,只属于当前,所以是静态派发。...2.4 NSObject Subclass final 修饰函数:同 Class dynamic 修饰 extension 函数:通过 objc_msgSend 方式派发 以上都是没有编译器优化情况下派发方式...@objc:是将是 swift 中 继承自 NSObject 函数暴露给 OC。原理:生成两个函数引用,一个给 swift 调用,一个给 objc 调用。

14710

iOS_Swift函数派发机制

优点:可扩展 缺点:速度慢,编译器对某些含有副作用函数无法优化 1.3 objc_msgSend 基于 Objc RunTime 实现,沿着实例 isa 指针进行查找,找不到最后还有3次拯救机会。...不只可以通过 swizzling 来改变,甚至可以用 isa-swizzling 修改对象继承关系,可以面向对象基础实现自定义派发 确定:速度最慢 ---- 2.派发类型识别 2.1 Struct...其他函数:以 Table 机制来查找调用。 2.3 Class - Extension extension 中方法属性无法继承重写,只属于当前,所以是静态派发。...2.4 NSObject Subclass final 修饰函数:同 Class dynamic 修饰 extension 函数:通过 objc_msgSend 方式派发 以上都是没有编译器优化情况下派发方式...@objc:是将是 swift 中 继承自 NSObject 函数暴露给 OC。原理:生成两个函数引用,一个给 swift 调用,一个给 objc 调用。

21720

Swift入门:

,但我们将在此基础继续:我想定义一个CountrySinger,它拥有Singer所做一切,但是当我它上调用sing()时,我想打印“Trucks, guitars, and liquor”。...它还允许Swift检查你代码:如果你不使用override Swift不允许你更改从你得到方法,或者如果你使用override而没有任何东西可以重写,Swift会指出你错误。...Objective-C混合使用 如果你想让苹果操作系统某个部分调用Swift方法,你需要用一个特殊属性来标记它:@objc。...这是“Objective-C”缩写,该属性有效地将该方法标记为可用于运行Objective-C代码——几乎所有的iOS、macOS、watchOStvOS。...例如,如果您要求系统一秒钟后调用您方法,则需要用@objc标记它。 现在不要太担心@objc,我不仅会在后面的上下文中解释它,Xcode还会在需要时告诉您。

70710

macOS webview编程

一是WKWebview文档,二是iOS文档。想要macOS下面Webview资料缈如黄鹤。 经过部分只言片语资料指导大量实验,终于完成了工作。所以决定来烧烧冷灶,写出来记录一下。...1.添加Webview 最简单添加webview方法就是直接在Interface Builder中把Webview拖入到窗口并且用鼠标拖动到指定位置指定大小,随后程序中加上对应变量: @...2.载入网页 可以直接导向到某个网页,也可以先在本地启动一个静态页面文件,后续一些工作可以本地静态网页中用js处理。这种方法是比较多用,因为程序启动速度会感觉快很多。...@objc标志 //在后面return "xxx"部分,返回字符串js中会使用名字, //本例中,swift中函数名跟js中函数名使用了相同名字,我认为这是好习惯 override...使用isKeyExcludedFromWebScriptwebScriptNameForKey函数,我用得少,如果需要,参考上面定义函数方法,查一查官方文档自己来试试吧。

5.1K50

加载(三)

今天来聊聊扩展。 首先来看看扩展分类区别 格式扩展是匿名分类 我们OC.m文件中,经常会使用扩展对某类进行私有的属性或者成员变量声明,如下: ?...比较一下扩展类目的写法,我们会发现它们两个不同点就在于:后面的小括号里面是否有内容,这个内容就是类目的名字。 因此,形式,我们可以说,扩展是匿名分类。...需要注意是,我们可以.m文件中创建一个扩展,用于声明私有的数据变量;也可以创建一个专门扩展文件,这样的话,一个如果需要相应扩展,那就引入相应扩展文件即可(一定要注意,是需要引入哦~)...今天,我会在一个更底层维度去解释这个原因。 前面提到了,扩展内容内容一样,他们都是在编译期就会被直接编译进内存,因此是可以直接在ro中获取到。而分类在运行时候才会被加载进rw。...因此给人假象就是,“主方法被分类给覆盖了”,实际并没有被覆盖,假象而已。 initialize方法分析 截止到上面所有的load方法调用完毕,整个函数也就执行完毕了。

42610

Swift编译之SIL(Swift Intermediate Language)

// 表示最终、经过规范化SIL代码 sil_stage canonical // 内建模块,提供了一些底层内建函数类型,这些函数类型通常用于Swift编译器生成代码中,执行一些特定低级操作...'main.Person.name.getter : Swift.String' // 使用sil hidden指令定义Personname属性setter方法,接受一个String实例一个...:指明这个modify方法是Personname属性modify方法 // : Swift.String:指定modify方法返回类型是Swift.String,这表示modify方法返回属性的当前值...Objective-C初始化方法 // @convention(objc_method):表示这是一个Objective-C方法 // @objc Person.init() sil private...drink()方法 // -> ():表示函数返回类型为空元组,即函数不返回任何值 // : $@convention(method):这部分指定了函数调用约定,表明这是一个方法Swift

20441
领券