[Xcode]编译时objc_msgSend错误的解决办法

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
之前开发的代码中需要强制使用一些苹果的私有API,用了objc_msgSend方法进行调用,最近使用最新版本的Xcode进行编译时一致无法通过,后来通过度娘解决了这个问题,在此记录一下,修改方法也很简单,将ENABLE_STRICT_OBJC_MSGSEND的属性值设置为NO就OK,至少目前还没发现程序有什么问题。

参考地址
http://www.ruanman.net/swift/learn/10443.html
http://blog.sina.com.cn/s/blog_916e0cff0102vdnj.html
Objective-C Hello World:解剖iOS运行时与消息派发机制 Objective-C 是 Apple 生态底层运行时模型的核心载体,其本质是基于动态消息派发(objc_msgSend)和运行时(Runtime)的面向对象系统。理解它需从基础概念切入:类对象、SEL选择器、IMP函数指针及方法缓存机制;原理上依赖编译期ARC入、链接期符号解析与运行期动态查找三级协同;技术价值在于支撑UIKit/Swift桥接/混编调试等关键能力;典型应用场景括崩溃分析(如unrecognized selector)、内存优化(autoreleasepool作用域)、Runtime 阅读详情

相关推荐

MonoMac跨平台开发:C#调用Objective-C的底层原理与实践

跨语言互操作是现代软件开发的核心能力之一,其本质在于不同运行时环境间的ABI兼容、内存模型对齐与消息传递机制协同。.NET通过P/Invoke和Runtime桥接实现与原生API通信,而MonoMac正是这一技术范式的早期典范——它将C#类型系统与Objective-C Runtime深度耦合,借助btouch绑定生成、Selector缓存、Messaging封装等关键技术,达成对Cocoa UI层的完映射。这种方案不仅支撑了早期macOS原生GUI应用的C#开发,更奠定了Xamarin乃至.NET MA

diedangxiang4092的博客 401

xcode 编译错误

warning: ignoring file /Users/danis/Xcodespace/Fabric/libWeChatSDK.a, missing required architecture x86_64 in file /Users/danis/Xcodespace/Fabric/libWeChatSDK.a (3 slices) Undefined symbols for arc

wudaye7的专栏 1550

重读2007年Objective-C前言:iOS开发的底层契约与精神源流

Objective-C是苹果早期iOS生态的基石语言,其核心在于C语言的底层控制力与Smalltalk面向对象思想的融合。它通过Runtime动态消息机制、toll-free bridging跨框架互通、协议(Protocol)驱动的鸭子类型等设计,构建了高度灵活又强约束的开发范式。这种‘契约优先’的思想深刻影响了后续Swift的内存所有权模型、Delegate向AsyncSequence的演进,以及UIKit到SwiftUI的架构迁移。理解Objective-C并非怀旧,而是掌握iOS平台级开发的本质逻辑

chuji3953的博客 414

iOS objc_msgSend 报错解决方案

更新Xcode 6后第三方库出现objc_ objc_msgSend

jiyinbo110的专栏 502

Xcode12 踩坑之 objc_msgSend

Xcode12 问题 objc_msgSend运行时方法报错,提示No matching function for call to 'objc_msgSend',google 了下,有人反馈是Xcode12的bug。Enable Strict Checking of objc_msgSend Calls 配置设为NO 无效。 xcversion 安装多版本Xcode xcversion gem install xcode-install xcversion list xcversion install 11

woashizhangsi的专栏 2027

Xcode】undefined symbols错误总结

今天在使用ZBar的时候,报了很多undefined symbols错误。特意总结一下这类错误。 1、framework缺失 这类错误一般是因为库文件没导入引起的。在导入CoreMedia.framework之后,错误消失。怎样快速找到缺失的库,这里面是有规律的。 前两个字母CM正是CoreMedia的缩写。还有类似的比如: _CV是缺失CoreVideo _CA是缺失CoreAnn

SoulHao的专栏 9597

xcode反汇编调试iOS模拟器程序(五)调试objc_msgSend函数

反汇编调试objective-c,遇到最多的就是objc_msgSend这函数了,本节主要讲讲它的实现以及调试过程的一些技巧。 以UIWebView为例子,看看它在loadRequest时了什么。 首先必须明白,原始代码中调用 [uiWebViewInstance loadRequest:request]的实质是调用objc_msgSend(uiWebViewInstance, "loa

心流汇聚之地 1万+

id objc_msgSend(id self, SEL op, ...)

1. 在 Xcode 6 版本以上编译报错问题   在 LLVM 6.0 中增加了一个 OBJC_OLD_DISPATCH_PROTOTYPES 宏,默认配置在   Target     -> Build Settings     -> Apple LLVM 6.0 - Preprocessing     -> Enable Strict Checking of obj...

weixin_30525825的博客 211

Object-C之Bug集中营

iOS-DeBug,Object-C之bug集中营

zero__cc的博客 348

去掉xcode中警告的一些经验

1、编译时,编译警告忽略掉某些文件       只需在在文件的Compiler Flags 中加入 -w 参数,例如: 2、编译时,编译警告忽略掉某段代码 #pragma clang diagnostic push#pragma clang diagnostic ignored "-Wmultichar"    char b = 'df'; // no warni

SpeedBoy007的专栏 2666

一起来找茬:记一起 clang 开启 -Oz 选项引发的血案

作者:字节跳动终端技术 —— 刘夏 前言 笔者来自字节跳动终端技术 AppHealth (Client Infrastructure - AppHealth) 团队,在工作中我们会对开源 LLVM 及 Swift 工具链进行维护和定制,推动各项编译器优化在业务场景中的落地。编译器作为一个复杂的软件也会有 bug,也会有各种兼容性和正确性的问题,这里我们分享一则开启 clang 的 -Oz 优化选项时发现的编译器缺陷。 问题 在 Xcode 中我们可以对 clang 编译器设置不同的优化等级,比如在 ..

YZcoder的博客 1438

Objective-C与C语言关系解析:从语法到苹果开发生态

C语言作为编译型语言的代表,其语法结构和指针操作奠定了现代编程语言的基础。通过引入Smalltalk的消息传递机制,Objective-C在C语言之上构建了动态的面向对象模型,实现了运行时多态和动态绑定。这种设计使得Objective-C能够与C++代码混合编译,形成Objective-C++模式,为高性能计算和复用现有C++库提供了技术路径。在苹果开发生态中,这一技术价值体现在Cocoa框架的构建和Xcode工具链的深度合上,使得开发者能够高效构建macOS和iOS应用。本文围绕C系语言谱系、Objec

343

Objective-C底层原理:从消息发送到运行时API实战

在面向对象编程中,消息传递机制是实现对象间通信的核心范式。Objective-C作为一门动态语言,其消息发送机制在运行时而非编译时进行方法绑定,这赋予了它强大的灵活性和动态性。理解这一原理对于掌握iOS/macOS开发至关重要,它能帮助开发者编写更健壮、高效的代码,并应对复杂场景。通过运行时(Runtime)API,开发者可以动态地查询、修改类与对象的结构,实现诸如方法交换(Method Swizzling)、动态添加方法等高级特性。这些技术广泛应用于AOP编程、热修复、JSON模型自动转换等场景。本文以O

weixin_34218890的博客 328

iOS逆向入门:基于Frida脚本库的实战环境搭建与Hook技术解析

动态代码技术允许开发者在程序运行时监控和修改其行为,是软件安全分析、漏洞挖掘和逆向工程的核心手段。其原理是通过注入代码或拦截函数调用,实现对目标进程的深度观测与控制。在移动安全领域,这项技术对于分析应用逻辑、检测安全漏洞和进行合规性测试具有重要价值。Frida作为一个跨平台的动态框架,通过JavaScript API提供了强大的运行时操作能力,广泛应用于iOS和Android应用的动态分析。对于iOS逆向工程初学者而言,直接编写Frida脚本涉及Objective-C运行时、JavaScript和F

weixin_30567225的博客 348

iOS马甲过审实战:二进制加固技术深度解析与应用

在iOS应用开发与安全领域,代码混淆和二进制加固是提升应用安全性与应对平台审核的关键技术。代码混淆通过改变类名、方法名等符号信息,增加逆向分析的难度,属于基础防护手段。而二进制加固则深入到编译后的机器码层面,通过控制流扁平化、指令替换、虚拟化等技术,从根本上改变程序的逻辑结构和指令序列,能有效对抗自动化相似度分析工具,技术价值更高。这些技术广泛应用于保护核心算法、防止逆向工程,以及在特定场景下满足合规要求。本文聚焦于iOS马甲过审这一具体应用场景,深入探讨如何利用LLVM-Obfuscator等工具实施二

weixin_30457551的博客 316

深入解析Mach-O文件中的LC_SYMTAB符号表

符号表是二进制文件中的核心数据结构,记录了函数、变量等符号的地址与名称映射关系。在Mach-O文件格式中,LC_SYMTAB命令专门管理符号表信息,其底层通过nlist结构体实现符号存储。理解符号表工作原理对动态链接、崩溃分析和逆向工程至关重要。通过otool等工具可以查看符号表内容,而在实际工程中常会通过剥离符号表来优化二进制体积。在iOS/macOS开发中,符号表解析技术广泛应用于崩溃日志符号化、动态链接错误排查等场景,是底层开发必须掌握的Mach-O文件分析技能。

weixin_33736832的博客 403

Objective-C入门指南:iOS开发基石与Swift混编实战

面向对象编程是现代软件开发的核心范式,它通过封装、继承和多态等机制组织代码。在iOS/macOS生态中,Objective-C作为C语言的超集,其独特的消息传递机制和动态运行时特性,构成了Cocoa和Cocoa Touch框架的设计哲学基础。理解Objective-C的原理,不仅能帮助开发者深入掌握内存管理、引用循环等底层机制,更能无缝对接海量存量代码库,提升解决复杂问题的能力。在实际工程中,掌握Objective-C与Swift的混编技巧,是维护大型项目、集成第三方库的关键。本文聚焦Objective-C

weixin_33881140的博客 466

macOS逆向工程与Hook技术实战:从原理到件开发

逆向工程是一种通过分析软件执行流程、数据结构和通信协议来理解其工作原理的技术,广泛应用于安全研究、软件调试和功能扩展等领域。其核心原理在于动态分析程序的运行时行为,结合静态分析定位关键代码逻辑。Hook(挂钩)技术作为实现逆向工程目标的关键手段,允许在程序运行时拦截并修改函数调用消息传递等行为,具有极高的技术价值。在macOS平台上,Hook技术常用于安全研究、性能优化和件化开发等场景。本文以具体实践为例,深入探讨如何通过Method Swizzling和动态分析等技术,实现macOS应用的件化改造,

weixin_33946605的博客 410

iOS应用深度加固实战:从源码混淆到运行时保护的完方案

在移动应用开发领域,代码保护与安全加固是保障核心知识产权和业务逻辑的关键环节。其基本原理是通过混淆、加密等技术手段,增加代码的逆向工程难度,从而提升应用的体安全性。这项技术的核心价值在于,它能有效防止核心算法、支付流程等敏感逻辑被轻易分析或篡改,尤其适用于金融、游戏等高价值业务场景。在iOS生态中,针对Mach-O二进制文件的保护,常涉及ast混淆、控制流扁平化、字符串加密等具体技术。例如,通过集成PPiOS-Rename等工具进行源码层符号混淆,或结合梆梆加固等商业方案进行二进制加固,能构建从静态分析到

weixin_30784501的博客 341
上一篇: [Android]解决HttpURLConnection上传大文件时出现OOM问题
下一篇: 强制清空系统本地DNS缓存
CG李大仁
博客等级 码龄19年 69粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值