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

OC与Swift的相互调用

OC调用Swift方法

1、在 Build Settings 搜索 Packaging ,设置 Defines Module 为 YES

 2、新建 LottieBridge.swift 文件,自动生成桥 ProductName-Bridging-Header.h

 3、在 LottieBridge.swift 中,定义Swift类继承于OC类,声明 @objcMembers@objc ,实现相关方法

import UIKit
import Lottie// 所有方法/属性声明
@objcMembers class MyLottieView: UIView {private let animationView = LottieAnimationView()override init(frame: CGRect) {super.init(frame: frame)self.addSubview(animationView)}override func layoutSubviews() {super.layoutSubviews()animationView.frame = self.bounds}public func setLottieFromURL(_ url: URL?) {if let url = url {LottieAnimation.loadedFrom(url: url) { [weak self] (animation) inself?.animationView.animation = animation}}}public func play() {animationView.play()}
}// 单个方法/属性声明
@objc class MyLottieView: UIView {private let animationView = LottieAnimationView()override init(frame: CGRect) {...}override func layoutSubviews() {...}@objc public func setLottieFromURL(_ url: URL?) {...}@objc public func play() {...}
}

4、在OC代码中引用 ProductName-Swift.h ,调用Swift相关方法

#import "ProductName-Swift.h"- (void)swiftTest {MyLottieView *lottieView = [[MyLottieView alloc] initWithFrame:CGRectMake(100, 100, 320, 320)];[self.view addSubview:lottieView];NSURL *url = [NSURL URLWithString:@"https://assets9.lottiefiles.com/packages/lf20_N0y2Nj.json"];[lottieView setLottieFromURL:url];[lottieView play];
}

Swift调用OC方法

1、在 ProductName-Bridging-Header.h 中加入OC的头声明

#import <YYKit/YYKit.h>
#import <AFNetworking/AFNetworking.h>

2、在Swift代码中调用OC的相关方法

private func OCTest() {let configuration = URLSessionConfiguration.default_ = AFURLSessionManager(sessionConfiguration: configuration)
}

相关文章:

OC与Swift的相互调用

OC调用Swift方法 1、在 Build Settings 搜索 Packaging &#xff0c;设置 Defines Module 为 YES 2、新建 LottieBridge.swift 文件&#xff0c;自动生成桥 ProductName-Bridging-Header.h 3、在 LottieBridge.swift 中&#xff0c;定义Swift类继承于OC类&#xff0c;声明 obj…...

某银行软件测试笔试题

&#xff08;时间90分钟&#xff0c;满分100分&#xff09; 考试要求&#xff1a;计算机相关专业试题 一、填空题&#xff08;每空1分&#xff0c;共10分&#xff09; 1. ______验证___是保证软件正确实现特定功能的一系列活动和过程。 2. 按开发阶段分&#xff0c;软件测试可…...

SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Spring MVC入门 一、Spring MVC概述二、入门案例2.1导入Sp…...

一文说清楚支付架构

作者&#xff1a;陈斌 支付的技术架构是为了保障能够顺利处理支付请求而设计的结构体系。从系统的角度看&#xff0c;它包括了计算机系统的软件、硬件、网络和数据等。从参与的主体角度来看&#xff0c;它涉及交易的付款方、收款方、支付机构、银行、卡组织和金融监管机构等。要…...

【Golang 接口自动化00】为什么要用Golang做自动化?

目录 为什么使用Golang做自动化 最终想实现的效果 怎么做&#xff1f; 写在后面 资料获取方法 为什么使用Golang做自动化 顺应公司的趋势学习了Golang之后&#xff0c;因为没有太多时间和项目来实践&#xff0c;怕止步于此、步Java缺少练习遗忘殆尽的后尘&#xff0c;决定…...

Android 架构模式如何选择

作者&#xff1a;vivo 互联网客户端团队-Xu Jie Android架构模式飞速演进&#xff0c;目前已经有MVC、MVP、MVVM、MVI。到底哪一个才是自己业务场景最需要的&#xff0c;不深入理解的话是无法进行选择的。这篇文章就针对这些架构模式逐一解读。重点会介绍Compose为什么要结合MV…...

深入了解 LoRaWAN® B 类设备

介绍 在 LoRaWAN 网络中,终端设备以三种模式之一运行:LoRaWAN A 类、B 类和 C 类。网络只能将消息(下行链路)发送到终端设备在两个短接收窗口之一期间处于 A 类模式,该接收窗口在设备向网络发送消息(上行链路)后立即打开。然而,这些上行链路不是预先安排的,并且可以由…...

KK集团再闯港交所:引领潮流零售市场,2023年一季度业绩增势显著

撰稿|行星 来源|贝多财经 7月31日&#xff0c;KK Group Company Holdings Limited&#xff08;下称“KK集团”&#xff09;在港交所更新招股书&#xff0c;补充了截至2023年3月31日的财务数据等信息&#xff0c;继续推进上市事宜&#xff0c;摩根士丹利和瑞信为其联席保荐人。…...

Vue中的组件渲染

在Vue中&#xff0c;组件的被渲染意味着将组件的内容转换为真实的DOM元素并添加到页面上。当Vue应用启动时&#xff0c;根组件会被渲染&#xff0c;并递归地渲染其子组件。 当组件被渲染时&#xff0c;Vue会将组件的模板解析成虚拟DOM&#xff08;Virtual DOM&#xff09;的形…...

docker 保存和载入镜像

查看本机docker镜像 docker images保存镜像 docker save -o /home/space/work1/docker_qnx7.1.tar.gz a01ee6d74c36复制镜像到其他服务器 scp /home/space/work1/docker_qnx7.1.tar.gz XXXIP:/home/dell/work1/登录新 服务器操作 docker load -i docker_qnx7.1.tar.gz载入后…...

Java框架(九)--Spring Boot入门(1)

SpringBoot 2.x入门简介 学前基础 Maven Spring MVC理念 开发环境 Spring Boot官网版本介绍 https://spring.io/projects/spring-boot#learn 我们点击 Reference Doc. &#xff0c;再点击Getting Started&#xff0c;就可以看到官网系统环境说明了 官网系统环境说明 Sp…...

2023年第四届“华数杯”数学建模思路 - 案例:随机森林

## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是随机森林&#xff1f; 随机森林属于 集成学习 中的 Bagging&#xff08;Bootstrap AGgregation 的简称&#xff09; 方法。如果用图来表示他们之…...

Redis中缓存穿透、击穿、雪崩以及解决方案

Redis中缓存穿透、击穿、雪崩以及解决方案 Redis作为一个高效的内存数据库&#xff0c;提供了缓存能力使得我们能够快速访问数据。然而&#xff0c;在使用Redis作为缓存时&#xff0c;我们可能会面临缓存穿透、缓存击穿和缓存雪崩的问题。接下来&#xff0c;我将详细解释这些现…...

系统架构设计师-软件架构设计(6)

目录 一、物联网分层架构 二、大数据分层架构 三、基于服务的架构&#xff08;SOA&#xff09; 1、SOA的特征 2、服务构件与传统构件的区别 四、Web Service&#xff08;WEB服务&#xff09; 1、Web Services 和 SOA的关系 五、REST(表述性状态转移) 六、ESB&#xff08;…...

Knife4j系列--解决不显示文件上传的问题

原文网址&#xff1a;Knife4j系列--解决不显示文件上传的问题_IT利刃出鞘的博客-CSDN博客 简介 本文介绍使用Knife4j时无法上传文件的问题。 问题复现 依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-…...

深入学习Mysql引擎InnoDB、MylSAM

目录 一、什么是MySQL 二、什么是InnoDB 三、什么是MyISAM 四、MySQL不同引擎有什么区别 一、什么是MySQL MySQL是一种广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是由瑞典MySQL AB公司开发并推广&#xff0c;后来被Sun Microsystems收…...

第七章:SpringMVC中

第七章&#xff1a;SpringMVC中 7.1&#xff1a;SpringMVC的视图 ​ SpringMVC中的视图是View接口&#xff0c;视图的作用渲染数据&#xff0c;将模型Model中的数据展示给用户SpringMVC视图的种类很多&#xff0c;默认有转发视图和重定向视图。 ​ 当工程引入jstl的依赖&…...

MySQL数据库——DQL操作——基本查询

文章目录 前言事前准备——测试数据整表查询指定列查找别名查询MySQL运算符条件查询模糊查询排序查询聚合查询分组查询分组之后的条件筛选 分页查询将整张表的数据插入到另一张表中 前言 MySQL数据库常见的操作是增删查改&#xff0c;而其中数据的查询是使用最多&#xff0c;也…...

Electron 开发,报handshake failed; returned -1, SSL error code 1,错误

代码说明 在preload.js代码中&#xff0c;暴露参数给渲染线程renderer.js访问&#xff0c; renderer.js 报&#xff1a;ERROR:ssl_client_socket_impl.cc(978)] failed; returned -1, SSL error code 1,错误 问题原因 如题所说&#xff0c;跨进程传递消息&#xff0c;这意味…...

知识区博主转型——兼做知识区和改造区博主!!!!!

想脱单的进来&#xff0c;一起交流如何能脱单&#xff01;&#xff01;&#xff01; 为什么——我太羡慕有对象的人了哭死&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 你是不是很羡慕别人怎么都有女朋友 别人家的女朋友怎么都那么好&#xff…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...