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

C调用Objective-C的类和方法

C调用Objective-C的类和方法

最近有一个C提供回调接口调用Objective-c接口来传递数据的需求,研究了很久,最终通过bing的AI对话查到了需要的内容,这里记录一下,算是给基于C的IOS开发开了一个头。

在Objective-C中,你可以创建一个全局的类方法,并在C语言中通过Objective-C运行时(Runtime)
来调用这个方法。以下是一个简单的例子:
// Objective-C类

@interface MyClass : NSObject
+ (void)classMethodWithArg1:(int)arg1 arg2:(int)arg2;
@end
@implementation MyClass
+ (void)classMethodWithArg1:(int)arg1 arg2:(int)arg2 {
NSLog(@"Hello, %d and %d", arg1, arg2);
}
@end

// C函数

#include <objc/runtime.h>
#include <objc/message.h>
void callObjectiveCClassMethod() {
Class myClass = objc_getClass("MyClass");
SEL mySelector = sel_registerName("classMethodWithArg1:arg2:");
((void (*)(id, SEL, int, int))objc_msgSend)(myClass, mySelector, 10, 20);
}

在这个例子中,callObjectiveCClassMethod是一个C语言的函数,它调用了Objective-C的类方法
classMethodWithArg1:arg2:。

另外,Objective-C的代码可以直接调用C的函数,直接引入C的头文件,不需要额外改动。

id为对象类型,int、double、long等类型也支持,字符串等类型也需要通过id对象来调用。

相关文章:

C调用Objective-C的类和方法

C调用Objective-C的类和方法 最近有一个C提供回调接口调用Objective-c接口来传递数据的需求&#xff0c;研究了很久&#xff0c;最终通过bing的AI对话查到了需要的内容&#xff0c;这里记录一下&#xff0c;算是给基于C的IOS开发开了一个头。 在Objective-C中&#xff0c;你可…...

驱动开发day1

头文件 #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014#define PHY_LED2_MODER 0x50007000 #define PHY_LED2_ODR 0x50007014#define PHY_LED3_MODER 0x50006000 #define PHY_LED3_ODR 0x50006014#define P…...

C++ linux vscode编译

.cpp .h文件关系与编译命令 单一cpp文件编译多个.cpp文件编译.h头文件和.cpp源文件在同一目录下编译.h头文件和.cpp源文件在不同一目录下编译 单一cpp文件编译 //test.cpp为测试源文件&#xff0c; a.out为输出可执行文件 g test.cpp -o a.out多个.cpp文件编译 目录1结构如下…...

卷积神经网络CNN学习笔记

目录 1.全连接层存在的问题2.卷积运算3.填充(padding)3.1填充(padding)的意义 4.步幅(stride)5.三维数据的卷积运算6.结合方块思考7.批处理8.conv2d代码参考文章 1.全连接层存在的问题 在全连接层中&#xff0c;相邻层的神经元全部连接在一起&#xff0c;输出的数量可以任意决…...

Java的Socket Timeout和tcp的存活探测包是不是一个东西

背景 你有没有好奇过我们在java中通过Socket.setSoTimeout()设置timeout参数时&#xff0c;他怎么做到在timeout时间到了之后连接就报错的&#xff1f;有没有产生过误解&#xff0c;这个参数就是设置keepalive探测包的检测间隔&#xff1f; 问题真相 其实Socket.setSoTimeou…...

基于跳蛛优化的BP神经网络(分类应用) - 附代码

基于跳蛛优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于跳蛛优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.跳蛛优化BP神经网络3.1 BP神经网络参数设置3.2 跳蛛算法应用 4.测试结果&#xff1a;5.M…...

基于鹈鹕优化的BP神经网络(分类应用) - 附代码

基于鹈鹕优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于鹈鹕优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.鹈鹕优化BP神经网络3.1 BP神经网络参数设置3.2 鹈鹕算法应用 4.测试结果&#xff1a;5.M…...

『ARM』和『x86』处理器架构解析指南

前言 如果问大家是否知道 CPU&#xff0c;我相信不会得到否定的答案&#xff0c;但是如果继续问大家是否了解 ARM 和 X86 架构&#xff0c;他们的区别又是什么&#xff0c;相信可能部分人就会哑口无言了 目前随着深度学习、高性能计算、NLP、AIGC、GLM、AGI 的技术迭代&#…...

Android 13.0 系统设置 app详情页默认关闭流量数据的开关

1.概述 在13.0的系统产品开发中,移动流量消耗也是关于产品优化的一个方面,由于产品需求需要对app详情页的流量进行管控默认关闭流量开关,不让流量无故流失,所以需要从流量开关分析问题流量打开流程,然后关闭 2.系统设置 app详情页默认关闭流量数据的开关的核心类 package…...

054协同过滤算法的电影推荐系统

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…...

分享一个基于JavaWeb的私人牙科诊所预约挂号就诊系统的设计与实现项目源码调试 lw 开题 ppt

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…...

从零开始的C++(十一)

vector的模拟实现&#xff1a; 1.构造函数&#xff1a; vector(){}vector(int n, const T& value T()){ reserve(n);for (int i 0; i < n; i){push_back(value);}}template<class InputIterator>vector(InputIterator first, InputIterator last){ auto it …...

驱动开发day2

通过物理内存映射为虚拟内存 实现三盏LED灯亮灯灭 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_RCC 0x50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014#defin…...

【CANoe】文件处理_hex文件读取解析

hex文件里面只有00&#xff0c;01&#xff0c;04三种码。那么我们在解析的时候只需要对这三种不同状态的进行不同的解析即可。 hex文件格式的解析&#xff0c;可阅读&#xff1a;HEX文件格式详解 首先创建一个Block的结构体&#xff0c;根据经验我们知道&#xff0c;一个数据…...

人脸识别顶会论文及源码合集,含2023最新

今天和大家聊聊人脸识别。 人脸识别的技术经过不断发展已经相当成熟&#xff0c;在门禁、监控、手机解锁、移动支付等实际场景都能看到。我们比较熟悉的识别方式是基于可见光图像的人脸识别&#xff0c;这种方式有个非常明显的缺点&#xff1a;光线限制。 在近两年的人脸识别…...

介绍drawio和图表使用场景

图表介绍 drawio是一个基于Web技术的草图、简图和图表的解决方案。 drawio支持在线编辑器&#xff0c;app.diagram.net.并支持不同的操作系统的桌面版离线安装版本。如&#xff1a;windows, linux, macOS。 对于个人或者团队&#xff0c;把图表绘制的安全放到第一位&#xff…...

leetcode-1438: 绝对差不超过限制的最长连续子数组

给你一个整数数组 nums &#xff0c;和一个表示限制的整数 limit&#xff0c;请你返回最长连续子数组的长度&#xff0c;该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组&#xff0c;则返回 0 。 示例 1&#xff1a; 输入&#x…...

【数据结构初阶】九、排序的讲解和实现(直接插入 \ 希尔 \ 直接选择 \ 堆 \ 冒泡 -- C语言)

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 【数据结构初阶】八、非线性表里的二叉树&#xff08;二叉树的实现 -- C语言链式结构&#xff09;-CSDN博客 排序 排序的概念 所谓排序&#xff0c;就是使一串记录&#xff0c;按照…...

uview组件使用笔记

图标样式 修改图标的样式 通过color参数修改图标的颜色通过size参数修改图标的大小&#xff0c;单位为rpx 效果图 <u-icon name"photo" color"#2979ff" size"28"></u-icon>图片图标 1.3.0 这里说的图片图标&#xff0c;指的是小…...

Linux1024一篇通俗易懂的liunx命令操作总结(第十课)

Linux1024一篇通俗易懂的liunx命令操作总结(第十课) 一 liunx 介绍 Linux是一种免费开源的操作系统&#xff0c;它的设计基于Unix。它最早是由芬兰的一位大学生Linus Torvalds在1991年开始编写的&#xff0c;取名为Linux。Linux具有高度的灵活性和可定制性&#xff0c;可以在…...

K-Means聚类效果总不好?试试在Scikit-learn里用标准化欧氏距离优化你的模型

K-Means聚类效果总不好&#xff1f;试试在Scikit-learn里用标准化欧氏距离优化你的模型 当你在电商用户分群项目中遇到这样的场景&#xff1a;消费金额&#xff08;0-10000元&#xff09;和登录次数&#xff08;1-100次&#xff09;两个特征被放在同一个聚类模型里&#xff0c;…...

TVHeadend终极指南:从零开始构建你的专属电视流媒体服务器

TVHeadend终极指南&#xff1a;从零开始构建你的专属电视流媒体服务器 【免费下载链接】tvheadend Tvheadend is the leading TV streaming server for Linux with ATSC, DVB-C/C2, DVB-S/S2, DVB-T/T2, IPTV, SAT>IP and unix pipe input sources 项目地址: https://gitc…...

逆向分析避坑:X64dbg内置字符串搜索为何不认UTF-8?聊聊插件生态与自定义解析

X64dbg字符串解析机制深度剖析&#xff1a;从编码原理到插件生态设计 逆向工程工具X64dbg在处理多语言字符串时表现出的"选择性支持"现象&#xff0c;实际上揭示了开源软件国际化策略与社区协作的经典范式。当开发者首次遇到中文字符串显示为乱码时&#xff0c;往往会…...

淘宝 API 数据缓存策略:Redis 多级缓存 + 本地缓存的混合架构

一、前言在电商业务体系中&#xff0c;淘宝 API 是商品信息、订单数据、价格库存、用户权益等核心业务数据的主要获取来源。反向海淘、电商分销、第三方工具对接等场景下&#xff0c;会高频调用淘宝开放平台 API&#xff0c;而 API 调用存在调用频次限制、接口响应延迟、配额成…...

如何3步实现Switch手柄跨平台集成:终极完整指南

如何3步实现Switch手柄跨平台集成&#xff1a;终极完整指南 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/gh_mir…...

番茄小说下载器完整指南:告别网络限制,随时随地畅读小说

番茄小说下载器完整指南&#xff1a;告别网络限制&#xff0c;随时随地畅读小说 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾经在地铁上、飞机上或者网络信号不好的地方&#x…...

深入Linux内核:进程调度与内存管理机制

深入Linux内核&#xff1a;进程调度与内存管理机制 现代操作系统的核心功能中&#xff0c;进程调度与内存管理是两大基石。Linux作为开源操作系统的代表&#xff0c;其内核设计精巧而高效&#xff0c;吸引了无数开发者深入研究。本文将带你探索Linux内核中进程调度与内存管理的…...

告别硬编码!用C++函数指针优雅实现游戏角色‘自杀’CALL(附完整代码)

告别硬编码&#xff01;用C函数指针优雅实现游戏角色‘自杀’CALL&#xff08;附完整代码&#xff09; 在游戏逆向工程领域&#xff0c;直接操作内存和硬编码地址的传统做法就像在钢丝上跳舞——虽然能完成任务&#xff0c;但稍有不慎就会导致崩溃或安全风险。本文将带你探索一…...

如何快速解密网易云音乐NCM格式:3步获得播放自由

如何快速解密网易云音乐NCM格式&#xff1a;3步获得播放自由 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 如果你从网易云音乐下载的歌曲在其他设备上无法播放&#xff0c;很可能遇到了NCM加密格式的限制。ncmdump是一个专门解决这…...

从Cortex-M到Cortex-A:内存屏障(DMB/DSB/ISB)的使用差异与迁移心得

从Cortex-M到Cortex-A&#xff1a;内存屏障的思维升级与实践指南 当工程师从单片机开发转向Linux驱动或Android系统开发时&#xff0c;往往会遇到一个令人困惑的现象&#xff1a;同样的内存屏障指令&#xff0c;在Cortex-M上运行良好的代码&#xff0c;移植到Cortex-A平台后却出…...