objective-c - 如何在 Objective-C 中检测未使用的方法和#import

在一个 iPhone 应用程序上工作了很长时间后,我意识到我的代码很脏,包含几个 #import 和根本没有调用或没有用的方法。

我想知道是否有任何编译器指令或方法来检测那些无用的代码行。 Xcode 是否有任何工具可以检测到这一点?

最佳答案

Xcode 允许您(取消)检查特定编译器警告的设置,这些警告可以警告您某些类型的未使用代码。 (在源列表中选择项目,然后选择 File > Get Info,然后选择 Build 选项卡。)这里有一些可能感兴趣的(对我来说是 Clang 和 GCC 4.2):

  • 未使用的函数
  • 未使用的参数
  • 未使用的值

我没有看到任何用于检测未使用的导入的选项,但这有点简单 - 低技术方法只是注释掉导入语句,直到您收到编译错误/警告。

未使用的 Objective-C 方法比未使用的 C 函数更难检测,因为消息是动态分派(dispatch)的。警告或错误可以告诉您存在潜在问题,但缺少警告或错误并不能保证您不会出现运行时错误。


编辑:检测(可能)未使用的方法的另一个好方法是检查实际执行的代码覆盖率。这通常与自动化单元测试一起完成,但并非必须如此。

This blog post是对使用 Xcode 进行单元测试和代码覆盖的一个不错的介绍。 gcov 部分(顺便说一下,仅适用于 GCC 生成的代码)解释了如何让 Xcode 构建可记录执行频率的检测代码.如果你在模拟器中测试你的应用程序构建,然后在其上运行 gcov,你可以看到使用像 CoverStory 这样的工具执行了哪些代码。 (一个相当简单的 GUI)或 lcov (用于创建 HTML 报告的 Perl 脚本)。

我将 gcovlcov 用于 CHDataStructures.framework并自动生成 coverage reports在每个 SVN 提交之后。同样,请记住,将执行覆盖率视为对哪些代码“死”的明确衡量标准是不明智的,但它肯定有助于确定可以进一步调查的方法。

最后,由于您正在尝试删除死代码,我认为您会发现这个 SO 问题也很有趣:

  • Profiling Objective-C binary image size

https://stackoverflow.com/questions/1456966/

相关文章:

objective-c - IOS:创建带有圆角的 UIImage 或 UIImageView

objective-c - 抑制警告 "Category is implementing a met

objective-c - Swift native 基类或 NSObject

objective-c - 获取对 iOS 应用程序中最顶层 View /窗口的引用

objective-c - 更改 UIButton 文本

objective-c - 如何删除 MKMapView 上的所有注释

ios - 如何防止 UINavigationBar 在 iOS 7 中覆盖 View 顶部?

iphone - 如何从 UITableViewCell 获取 UITableView?

iphone - 如何获得精确的时间,例如在 Objective-C 中以毫秒为单位?

objective-c - iPad 纵向和横向模式的尺寸调整类