如何查看ARC转换错误列表及跨类@selector的Objective-C语法
解决Objective-C应用ARC转换的两个问题
一、查看并复制所有ARC转换错误
- 使用报告导航器
- 点击Xcode左侧导航栏最底部的报告导航器(文档箭头图标)
- 在顶部筛选栏选择最新的「Convert to Objective-C ARC」任务
- 展开任务详情后,右键点击错误列表区域,选择
Copy All Issues,即可复制所有错误到剪贴板,再粘贴到文本编辑器。
- 使用命令行转换
- 打开终端,进入项目根目录:
cd /path/to/your/project - 执行转换命令:
xcodebuild -convert-to-arc -project YourProjectName.xcodeproj -target YourTargetName - 终端会输出所有转换错误,直接复制输出内容即可。
- 打开终端,进入项目根目录:
二、Objective-C跨类选择器的正确语法
在Objective-C中没有像Swift那样ClassName.selector的直接语法,但可以通过以下方式确保跨类选择器在ARC转换时通过:
- 公开方法场景:如果目标类的方法是公开的,在调用类中导入目标类的头文件,直接使用
@selector(methodName:)即可。 - 私有方法场景:如果目标方法是私有方法,在调用类的
.m文件顶部添加类扩展声明目标方法,示例:
之后就能安全使用@interface TargetClass () - (void)privateTargetMethod:(NSString *)param; @end@selector(privateTargetMethod:),ARC转换时会识别方法的内存管理语义,避免报错。 - 动态获取选择器:如果需要动态指定类和方法,可以使用
NSSelectorFromString(@"methodName:"),但要确保目标类确实存在该方法,否则运行时会崩溃。
内容的提问来源于stack exchange,提问作者Duncan C
相关产品推荐
相关产品推荐

