XCode中Categories的类出现无法识别函数的问题的解决办法

Sagacity知识操作系统:用博客构建个人技术认知基座 在信息过载时代,‘个人知识管理’已从工具堆砌升级为系统化认知工程。本文围绕‘写作驱动思考’与‘公开交付倒逼深度’两大核心原理,解析如何将博客转化为可演进的知识操作系统——它不是内容发布平台,而是以结构化元数据为索引、以真机验证为底线、以读者反馈为校准器的终身学习基础设施。技术价值在于将碎片经验升维为可复用判断模型,支撑中高级开发者突破认知瓶颈、独立创作者沉淀差异化品牌、终身学习者搭建第二大脑。典型应用场景包括iOS开发中的SwiftUI动画陷阱溯源、后台调度机制分析,以及跨版本兼容性验证闭环。 阅读详情

今天在工程中加入日历控件,使用一个开源的库,Kal。

将kal库加入已有工程过程中出现一个小插曲,kal工程类目录如果和工程类文件同一级的话会出现包含的头文件无法找到的问题,估计是工程无法定位外部工程在.xcodeproj下一级的目录。将kal类文件夹放在.xcodeproj文件同一级或者上一级,在头文件路径中设置好查找路径就没有问题。

下面说回主题,日历视图添加到指定为止后,调用如下代码定位到当前日期:

- (void)showAndSelectToday
{
    [kalVC showAndSelectDate:[NSDate date]];
}

上面函数进一步调用以下函数:

- (void)moveToMonthForDate:(NSDate *)date
{
  self.baseDate = [date cc_dateByMovingToFirstDayOfTheMonth];
  [self recalculateVisibleDays];
}

这时候问题出现了,运行时候报错:-[__NSCFDate cc_dateByMovingToFirstDayOfTheMonth]: unrecognized selector sent to...

NSDate是已经categories过了的,定义如下:

@interface NSDate (KalAdditions)
问题就出现在这里了,为什么没调用已经categories过的类,而调用了最原始的类?对比了例子工程,所有包含文件,链接文件等都一样了,就是得不到相同的结果。

苦苦搜索了一番,原来categories过的类要使XCode识别,需要添加链接参数,在工程中设置如下:Build Settings->other linker flags加入-ObjC或者-all_load。例子工程加入的参数是-all_load。

引用老外的解释:

Objective-C does not define linker symbols for each function (or method, in Objective-C) - instead, linker symbols are only generated for each class. If you extend a pre-existing class with categories, the linker does not know to associate the object code of the core class implementation and the category implementation. This prevents objects created in the resulting application from responding to a selector that is defined in the category.

To resolve this issue, the target linking against the static library must pass the -ObjC option to the linker. This flag causes the linker to load every object file in the library that defines an Objective-C class or category. While this option will typically result in a larger executable (due to additional object code loaded into the application), it will allow the successful creation of effective Objective-C static libraries that contain categories on existing classes.

Important: For 64-bit and iPhone OS applications, there is a linker bug that prevents -ObjC from loading objects files from static libraries that contain only categories and no classes. The workaround is to use the -all_load or -force_load flags.

重新编译,运行,终于看到期待已久的日历界面了。thank goddess! 

YOLOv5 模型剪枝与量化实战:从训练到部署,轻量化模型性能不减(2026终极指南) YOLOv5 轻量化三部曲稀疏训练:让模型学会“偷懒”,把不用的神经元权重压到 0。手术剪枝:切掉那些权重为 0 的神经元,物理减小模型体积。量化压缩:把剩下的神经元从“高精度浮点”变成“低精度整数”,进一步压榨速度。这套组合拳是 2026 年边缘 AI 部署的标准工业流程。虽然 YOLOv8/v10 原生支持更好的导出,但 YOLOv5 的这套手动控制流程能让你更深刻地理解模型结构,并在极端资源受限的场景下(如 MCU、超低端手机)挖掘出最后的性能潜力。最后建议如果你的项目时间紧迫,优先尝试。 阅读详情

相关推荐

Playwright自动化测试实战:攻克日历时间控件三大策略与Java实现

在Web自动化测试领域,元素定位与交互模拟是核心技术基础,其原理在于通过程序精确识别并操作页面中的DOM元素,以模拟真实用户行为。这项技术的核心价值在于提升测试效率、确保交互逻辑的覆盖度与可靠性,广泛应用于电商、金融、OA等系统的功能验证。日历时间控件作为典型的复杂交互组件,常涉及动态弹出层、多级导航与状态同步,是自动化测试中的常见难点。本文聚焦于使用Playwright工具,针对此类控件深入剖析了三种核心解决策略:从最高效的直接赋值、到全面模拟用户交互的主流方法,再到利用组件特性的混合定位方案,并结合Ja

weixin_28835551的博客 311

Xcode7.0无法找到category的解决方法

初学objective-C的朋友们可能会碰到一个问题,就是在新版的xcode的开发工具中,由于布局有些变化,在xcode6.0之前的版本。category的创建是在OSX-->Objective Category的选项中。    但是,在Xcode之后,这一类别已经找不到了,如图所示极为Xcode7.0的界面, ,那么我们如何来添加类别呢?上图中,红色圈中的部分为Objective-File,

helinlin007的专栏 4452

人工智能100问☞第5问:什么是AI三要素?

人工智能的核心三要素是​​数据、算法和算力​​,分别作为AI的“燃料”、“大脑”和“动力”,三者协同驱动智能系统的学习、推理与决策能力。

bjdx_001的博客 1991

XCode15 无法创建Category(分类)、Extension(扩展)

XCode15 无法创建Category(分类)、Extension(扩展)

wyz670083956的博客 743

STK中的传感器、雷达、发射机、接收机、天线

本文根据STK手册介绍了传感器、雷达、发射机、接收机、天线等对象的基本属性,简略分析了它们的不同之处。

wangyulj的专栏 1万+

DSP28335做FFT傅里叶变换

1. 看了一下例程,居然没有FFT的例程,难道这个DSP28335不能做FFT吗?对了C2000系列是有C2000 ware这个库的。方便很多,不过目前不确定在C5000上运行的FFT能直接迁移到DSP28335上行不?测试了一下,是可以的,因为都是用的math.h,下面的一些正弦函数基本一样的 2. 硬件简介,其中DSP28335和TLV320AIC23B之间使用I2C接口进行寄存器配置,...

weixin_30390075的博客 3331

iOS类别扩展无法识别添加方法

iOS类别扩展无法识别添加方法

chenxi506343891的博客 929

Arduino平台软硬件原理及使用——Arduino Uno板卡的使用

Arduino Uno板卡的基本使用

洪博hopes的博客 4171

c#方法(函数)

语法: public : 访问修饰符,公开的,那都可以访问; static:静态的; 返回值类型:如果不需要返回值,写viod; 方法名:每个单词字母大写; 参数列表:可省略,注意参数前边也必须要带上参数的类型。 [ public ] static 返回值类型 方法名([参数列表]) { 方法体; } 如: 1、求最大值: class Hello { static void Main() { } public...

记录点滴 1070

RT-DETR训练自己的数据集(从代码下载到实例测试)

在Windows10上配置CUDA环境教程是百度提出的一种实时目标检测模型。RT-DETR采用了与DETR相同的编码器和解码器结构,但对其进行了大量的优化,在保持较高检测精度的同时,实现了实时目标检测,为目标检测领域提供了一种新的有效解决方案,具有广泛的应用前景,如自动驾驶、智能监控、机器人等领域。以上是RT-DETR官方的论文和代码,详细介绍了RT-DETR的构成和实现。在YOLOv10中也实现了RT-DETR的代码,所以本文使用YOLOv10的项目文件进行RT-DETR的训练和测试。YOLOv10。

Limiiiing的博客 4万+

保姆级教程解决Edge Copilot该服务在你所在的地区不可用及Sign in to continue your chat.——电脑篇

相信很多人更新到Win11之后都注意到自带的浏览器右上角多了一个Copilot,这个副驾驶是微软与OpenAI合作,免费使用,包括插件功能。相当于你可以在电脑上免费的使用GPT4。很可惜,点开提示该服务在你所在的地区不可用。很多人第一时间想到科学的上网应该就可以解决了,尝试后又提示you’ve reached the conversation limit for today.Sign in to continue your chat.明明登录账号了为什么还是不能用?不是免费吗,为什么提示今天受限制。 其实上

weixin_44887342的博客 5万+

Maven 中的cannot Resolve情况

Maven Cannot reslove org.SpringFrame......

m0_54233076的博客 1万+

rk628d修改默认分辨率

在rk3568上使用628d hdmi转mipi,在628d已经调试好的情况下,客户新增需求:视频输入这边的推荐分辨率固定在1024x768。

m0_60805802的博客 2052

如何在5分钟内上手Objective-C-RegEx-Categories?新手必备快速入门指南

对于iOS和macOS开发者来说,处理文本匹配和模式识别是日常开发中的常见需求。Objective-C-RegEx-Categories 是一个强大的开源库,它通过简洁的API让正则表达式在Objective-C和Swift中变得异常简单。如果你曾经为复杂的NSRegularExpression语法而头疼,那么这个库将成为你的救星!😊 ## 🚀 为什么选择Objective-C-RegEx-

gitblog_00927的博客 357

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Building Objective-C static libraries with categories

Q:  Why do I get a runtime exception of "selector not recognized" when linking against an Objective-C static library that contains categories? A: Why do I get a runtime exception of "selector not r

一头雾水的Blog 703

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Objective-C编程语言入门与常见问题

Objective-C作为C语言的面向对象扩展,具有封装、继承、多态等特性,同时支持动态识别、弹性消息传递等独特功能。其基础语法包括#import引入框架、@autoreleasepool内存管理、NSLog输出等,并继承了C的基本数据类型。虽然不支持命名空间和运算符重载,但能与C语言无缝结合。目前主要使用LLVM编译器,建议通过Xcode实践操作来掌握。典型"Hello World"示例展示了Objective-C的基本语法结构和运行方式。

Daniel_xi1的博客 499

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Peckham完全指南:从安装到精通,让import管理更简单

Peckham是一款专为Xcode设计的插件,旨在简化iOS/macOS开发中的`#import`管理流程。通过直观的界面和智能搜索功能,开发者可以快速添加所需的头文件引用,显著提升编码效率。本文将从安装到高级技巧,全面介绍这款实用工具的使用方法。 ## 🚀 为什么选择Peckham? 在传统开发中,手动添加`#import`语句不仅繁琐,还容易出现拼写错误或引用遗漏。Peckham通过以下

gitblog_00301的博客 276

5款免费macOS系统清理优化工具终极指南:让你的Mac重获新生

还在为Mac电脑越来越慢、存储空间不足而烦恼吗?随着使用时间的增长,macOS系统会积累大量缓存文件、系统日志和临时数据,这些"数字垃圾"不仅占用宝贵存储空间,还会拖慢系统运行速度。今天,我将为你介绍open-source-mac-os-apps项目中5款完全免费的开源macOS系统清理工具,它们能帮你彻底清理Mac,让系统性能恢复如新! ## 🚀 项目核心价值:开源的力量 open-sou

gitblog_00256的博客 164

跨平台多设备兼容性测试与未来设备适配技术解析

跨平台兼容性作为现代软件开发的核心概念,其原理在于通过统一的接口设计和适配层实现不同操作系统和硬件设备的无缝协作。在移动互联网时代,多设备支持技术能够显著提升开发效率,降低维护成本,特别是在iOS生态系统中,设备管理技术需要兼顾现有设备兼容性和未来设备的前瞻性适配。从工程实践角度,数据同步机制和API接口设计是确保多设备协同工作的关键技术,通过增量同步和冲突解决策略可以有效优化网络资源使用。在应用场景方面,这类技术不仅适用于开发者进行多设备测试,还能为普通用户提供统一的数据管理体验。本文以支持iPhone1

weixin_34050005的博客 336

object-c小结

XCode:可以把它看成是一个开发环境,就好像VisualStudio或者Netbeans或者SharpDevelop一样的玩意。可以将Interface Builder认为是VisualStudio中用来画界面的那部分功能单独提出来的程序。 Objective-C:这是一种语言,就好像c++是一种语言,Java是一种语言,c#是一种语言,莺歌历史也是一种语言一样。 Coc

ibmyself的专栏 698

Bagisto Flutter iOS 推送通知配置指南:Firebase Cloud Messaging 与 APNs 全流程实战

本文以开源电商应用 opensource-ecommerce-mobile-app(Bagisto Flutter 移动端)仓库中的 [Docs/iOS_Firebase_Setup.md](https://link.gitcode.com/i/d6bd69c9d835274897727eb3ecaba173) 为骨架,完整讲解如何为 iOS 端接入 Firebase Cloud Messagin

gitblog_00285的博客 489

Bagisto 开源电商移动应用安装指南:环境准备、源码运行与多平台配置

本文是 Bagisto 开源电商移动应用(`bagisto_flutter`)的完整安装与配置实战指南,面向需要从**原始源码**(Raw Source Code)出发,将这套基于 Flutter 的移动商城客户端跑起来,并接入自己 Bagisto 店铺后端的新开发者。读完本文,你将掌握:开发环境(Android Studio / Flutter / Xcode)的自检方法、源码获取与依赖安装流程

gitblog_02112的博客 915

WuKongIM MQTT 投递读取预算诊断:从读屏障归因到复合原始读取回归

本篇技术指南围绕 WuKongIM 的 MQTT 消息投递(delivery)路径展开,核心回答一个问题:**当 100,000 成员的群组 fanout 出现初始回执超时、unsubscribe 冲突等间歇性失败时,如何用分阶段测量(stage diagnostic)定位真正的热点,并设计一个"读取预算"(read budget)回归边界来约束未来的优化**。读者读完可以掌握:WuKongIM

gitblog_00209的博客 1036

coreboot cbfstool 内存映射启动介质处理指南:mmap 窗口与 XIP 地址转换

`cbfstool` 是 coreboot 中用于管理 CBFS(coreboot 文件系统)组件的核心工具,而在 x86 平台上,SPI flash 启动介质在运行时会被直接映射进主机地址空间,这给支持 XIP(就地执行)的组件引入了"SPI flash 地址空间"与"主机地址空间"两套坐标系。本文基于 [mmap_windows.md](https://link.gitcode.com/i/3

gitblog_00744的博客 1175

macOS 垃圾清理工具实战指南:用 Mole 在终端里一次搞定清理、卸载与磁盘体检

你的 Mac 是不是也这样:512GB 的硬盘明明没装多少东西,可用空间却越来越少;点开「关于本机」时,总有一种内存告急的焦虑感。别急着怪自己乱装软件,真正吃空间的东西,往往是那些看不见的缓存、日志和卸载残留——而大多数人的第一反应是花钱买清理软件,或手动在访达里翻找,效率低还容易误删。 Mole 就是为解决这个问题而生的开源 macOS 垃圾清理工具:它把清理、卸载、磁盘分析、系统优化和实时监

gitblog_01047的博客 1018

BrewUI:macOS原生Homebrew图形界面设计与实现

Homebrew作为macOS最主流的包管理器,长期依赖命令行交互,对新手和非开发用户存在显著使用门槛。其核心原理是基于Ruby编写的formula脚本系统,通过shell调用编译安装依赖包,但缺乏可视化状态管理、权限自动适配与跨芯片架构兼容能力。BrewUI正是为解决这一技术断层而生——它不是替代Homebrew,而是以Swift+SwiftUI构建原生GUI层,将brew命令安全封装为可审计、可追溯、响应式驱动的操作接口。技术价值体现在三方面:深度集成macOS系统框架(FileManager/Proc

weixin_34332905的博客 338
上一篇: 上传应用程序到App Store出现图标报错问题的解决办法
下一篇: 沉痛的教训,UITableViewCell使用总结
sing_sing
博客等级 码龄20年 209粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值