清理 Objective-C 代码

2024-02-20

在处理复杂问题时,我发现自己尝试了各种解决方案,尽管尽最大努力保持条理清晰,但代码可能会变得相当混乱。对象可能会被更改并且不再使用,而其他时候我可能会添加代码片段,这些代码片段最终不会被程序使用,但会占用空间和可能的内存。

除了仔细阅读程序之外,还有其他方法可以找到程序未使用的代码块吗?

您发现了哪些清理程序的技巧?

我发现的一个小技巧是使用“搜索全部”功能(cmd-shift-F)并按对象名称


以下文章介绍了在应用程序中报告代码覆盖率的几种方法:

http://seriot.ch/blog.php?article=20080728 http://seriot.ch/blog.php?article=20080728

它面向 Mac 应用程序,但也主要适用于 iPhone 应用程序(DTrace 只能在模拟器中使用)

正如文章所指出的,在 Objective-C 中,这是一个比其他语言更难的问题,因为很容易有一个由 PerformSelector 调用的方法,即使它被调用,静态分析也会报告为死代码(是的,你也可以这样做Java 中也有类似的事情,但这样做的情况要少得多)。

也许 gcc 警告标志是最好的主意,同时仔细检查它认为未调用的方法。实际上,在应用程序中运行每个可能的代码路径实际上非常困难,但是如果您有一组较小的可能的函数需要删除,至少您可以更快地做出选择,这样您就不必测试每个路径......

编辑:我可能应该明确指出,代码覆盖率是一种可以用来查找“死”代码的技术,这就是您所追求的

编辑2:链接已失效!我找不到缓存的版本,而且我记不太清楚,无法总结更多有关它包含的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

清理 Objective-C 代码 的相关文章

  • 使用 Python 查找 Mac OS X 中的当前活动窗口

    有没有办法使用 Python 在 Mac OS X 上查找给定时间当前活动窗口的应用程序名称 这应该有效 usr bin python from AppKit import NSWorkspace activeAppName NSWorks
  • 如何使用 xcode 3.1.3 处理 iAd

    目前我正在集成 iAds 并制作该应用程序的精简版 我的问题是以前我使用的 iAds 是 xcode 4 1 3 但目前我使用的是 xcode 3 1 3 iAds 不支持我们所做的 请帮助我 NSString contentSize UI
  • iOS:保持应用程序在后台运行

    如何让我的应用程序在后台运行 我需要越狱我的 iPhone 才能执行此操作吗 我只需要这个应用程序每隔设定的时间间隔从互联网上检查一些内容 并在需要时发出通知 以供我自己使用 是的 不需要越狱 查看本文档的 实现长时间运行的后台任务 部分A
  • 如何创建一个 NSMutableArray 并为其分配一个特定的对象?

    我刚刚开始接触 Obj C 并且希望创建一个 MKAnnotations 数组 我已经创建了名为的 MKAnnotation 类TruckLocation其中包含名称 描述 纬度和经度 这是到目前为止我所拥有的数组 NSMutableArr
  • 删除 NSMutablearray 中的最后一个对象[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 为什么要删
  • 如何在 Monotouch 中对 UIImageView 进行运动模糊效果?

    在 MonoTouch 中进行实时运动模糊的方法是什么 当滚动惯性图片库时 我需要在 UIImageView 上应用运动模糊效果 以强度和方向作为参数 就像在 Photoshop 中一样 我在 CocoaTouch 或 CoreAnimat
  • 应用程序在第二次运行 nsnull 计数的循环时崩溃

    我有一个循环 第一次运行正常 但第二次循环时我得到 NSNull count unrecognized selector sent to instance 0x3a094a70 Terminating app due to uncaught
  • 在 Objective C 中使用下划线作为属性名称前缀 [重复]

    这个问题在这里已经有答案了 我以前避免在变量名中使用下划线 这可能是我大学 Java 时代的遗留下来的 因此 当我在 Objective C 中定义属性时 我自然会这样做 In the header interface Whatever N
  • 在 UITableviewCell 高度动画的同时动画 CALayer 阴影

    我有一个 UITableView 我正在尝试使用它来展开和折叠beginUpdates and endUpdates方法并在发生时显示阴影 在我的自定义 UITableViewCell 中 我有一个图层 我为其创建阴影layoutSubvi
  • 跟踪所有 ObjC 方法调用?

    有时 当查看别人的大型 Objective C 程序时 很难知道从哪里开始 在这种情况下 我认为记录对每个非 Apple 方法的每次调用会很有帮助 有没有办法做到这一点 基本上 在某个中心位置进行一项更改 并记录调用的每个方法 最好仅限于非
  • Objective-C 实例变量?

    我确信我在这里的困惑只是因为陷入 Java 思维方式 并且不理解 Obj C 在这种情况下有何不同 在Java中 我可以在类中声明一个变量 就像这样 并且每个instance该类的 将会有它自己的 MyClass String myVar
  • iPhone 上的最大蓝牙连接数是多少?

    如果您对此有任何见解 那么了解连接之间是否存在很大的延迟也会很高兴 蓝牙协议规定连接是点对点的 因此称为 配对 但不同的站可以同时使用不同的配置文件 每个配置文件一次仅支持一个连接 您可以同时与汽车建立立体声耳机连接并与笔记本电脑建立数据连
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • iOS 4.2.1 丢失文件?

    这是我第一次使用最新的 xcode 3 2 5 和新的 iOS 4 2 1 当我在设备上运行应用程序时 我收到以下运行时错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport
  • 在 iOS 中录制音频并永久保存

    我制作了 2 个 iPhone 应用程序 可以录制音频并将其保存到文件中并再次播放 其中之一使用 AVAudiorecorder 和 AVAudioplayer 第二个是苹果的在这里说话 http developer apple com l
  • 自动布局和ios5

    我正在使用故事板 我已经使用了自动布局 但它不适用于 ios5 并且会崩溃 所以我想删除它 但是 如何取消选中自动布局 但如果我取消选中自动布局 我如何为 iPhone 4 和 5 设置屏幕 Regards 您可以在 IB 中禁用自动布局
  • 如何添加授权以从新钥匙串对应用程序进行代码签名,而无需任何人工交互

    我正在尝试使用特定证书自动化构建 iPhone 应用程序的过程 因此 想象一下 如果不同的用户将他们的证书上传到系统中 并且可以立即用于代码签名 我想在没有任何交互的情况下做到这一点 我也不想用不同的用户证书弄乱系统或登录钥匙串 为此我有
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p

随机推荐

  • 无法更新 Dynamodb 表,出现 ValidationException

    我需要仅使用分区键来更新我的 dynamodb 表 但我得到了验证异常 我创建了一个包含 3 个字段的表 id 分区键 名称 排序键 age 然后我尝试仅使用 id 更新年龄字段 尝试将年龄 30 修改为 40 这是我的代码 var AWS
  • 如何调试 gulp-sourcemaps 不执行任何操作?

    我有一个相当标准的用例gulp sourcemaps https github com floridoo gulp sourcemaps https github com floridoo gulp sourcemaps gulp src
  • SQLAlchemy 获取匹配查询的每一行并循环遍历它们

    我是 Python 和 SQLAlchemy 的新手 我一直在尝试从数据库中检索内容 并且每次都有效 但我有点不确定当 select 语句将返回多行时该怎么做 我尝试使用一些在开始 SQLAlchemy 之前有效的旧代码 但是db是一个 S
  • Google PHP API 客户端:CA 证书错误

    我正在尝试与 Google PHP API 客户端交互 但 Google 提供的证书存在问题 谷歌错误 SSL certificate problem verify that the CA cert is OK Retrying with
  • 在 Caliburn.Micro 中如何将操作绑定到嵌套的 ViewModel 方法?

    我有一个 WPF 应用程序 由 Caliburn Micro 提供支持 视图模型优先方法 有一种命令栏类型的控件 其CommandBarView xaml并绑定命令栏视图模型 命令栏虚拟机包含许多嵌套虚拟机 每个虚拟机对应一个按钮控件 所有
  • 在C中将十进制数转换为二进制数

    我正在尝试将十进制数转换为二进制数 但不知何故最终得到 随机 ASCII 符号作为输出 这是我的程序 include
  • 如何删除 GitHub 拉取请求中显示的“Continous-integration/jenkins/pr-merge”和“Continous-integration/jenkins/branch”检查?

    我为 Jenkins 安装了一个插件 它可以分解运行的每个阶段 因此 我不需要额外的两个显示支票 有什么办法可以隐藏它们吗 我能够通过安装以下插件解决这个问题 https github com jenkinsci disable githu
  • 替换字符串中的特定字符

    我想从向量中的字符串中删除特定字符 类似于查找和替换Excel 中的功能 这是我开始的数据 group lt data frame c 12357e 12575e 197e18 e18947 我只从第一列开始 我想通过删除来生成第二列e s
  • SCons 长命令行 TEMPFILE 与 MinGW

    我正在尝试在 Windows 上使用 SCons 和 MinGW 从 gcc 和 gfortran 对象构建共享库 但在最终链接期间命令行太长 超过 18000 个字符 我知道我需要使用临时文件 响应文件 来传递命令行 但我找不到让 SCo
  • OAuth 令牌安全

    据我所知 OAuth 标准对于 OAuth 真正应该如何表现非常宽松 但是 我将各种 OAuth 服务的 OAuth 访问令牌存储在数据库中 如果这些代币被泄露 它们是否可以被第三方使用 即 给定的令牌是否仅绑定到我的 api 和密钥 令牌
  • “g++”不被识别为内部或外部命令、可操作程序或批处理文件。

    我正在尝试使用 C 编译器设置 VScode 通过遵循本教程在此输入链接描述 https medium com jerrygoyal run debug intellisense c c in vscode within 5 minutes
  • 使用Cucumber,有没有一种方法可以在没有界面的情况下登录用户?

    我的绝大多数 Cucumber 功能都需要用户登录 但是 我实际上不需要为每个测试都测试登录功能 我目前正在使用 Devise 进行身份验证 我正在寻找一种使用设备登录用户的方法 而无需填写登录表单 有办法做到这一点吗 我宁愿不必在每次测试
  • kotlin 与 jooq 并手动编写表模型,无需生成代码

    我正在尝试 jOOQ 和 Kotlin 并看过一些教程和文档 它看起来非常好 但如果说 jOOQ 有一个非常烦人的地方就是代码生成 它看起来太复杂了 最终无法维护 我决定创建自己的表模型 类似于 hibernate 的工作原理 我创建了两个
  • 如何使用 A 的值作为映射中的键将 Seq[A] 转换为 Map[Int, A]?

    我有一个Seq包含如下所示的类的对象 class A val key Int 现在我想转换这个Seq to a Map 使用key每个对象的值作为键 对象本身作为值 所以 val seq Seq A val map Map Int A Ho
  • 使用 Python 查找 JSON 中的值

    我之前已经成功地从 JSON 文件解析数据 但现在我想要实现的功能遇到了问题 我有一个 JSON 格式的姓名 身份证号码和生日列表 我想要在 Python 中实现的是能够让用户输入姓名并检索他的身份证号码和出生日期 如果存在 这是我的 JS
  • 同时执行多个批处理文件并监视它们的过程是否完成

    我有一个主批处理文件 它调用多个批处理文件 我希望能够同时执行所有这些批处理文件 全部完成后 我需要在主批处理文件中进行进一步的处理 当我使用 开始 调用多个批处理文件时 我可以同时启动所有批处理文件 但我失去了对它们的跟踪 主批处理文件在
  • 如何在 C# 中启用此计时器?

    我已经开始了 C 课程 但无法让计时器运行 它可能非常简单 我只是在这里错过了一些东西 基本上我有一个按钮来启动和停止交通灯序列 我想要 1 秒的间隔 这是我写的 当我按下开始键时 它没有按预期工作 谢谢 public int counte
  • 需要在 SSRS 订阅上设置日期参数

    我在 SSRS 中有一份报告 它采用单个日期作为参数 我想要的是该报告的订阅使用前两周的星期六作为日期 即 星期一 7 4 将给出星期六 7 16 我如何在订阅中执行此操作 看来我不能在参数中做公式 您必须在报告中设置默认参数值 而不是在订
  • 有没有办法在Python中获取对象的当前引用计数?

    有没有办法在Python中获取对象的当前引用计数 根据Python文档 https docs python org dev library sys html sys getrefcount the sys模块包含一个功能 import sy
  • 清理 Objective-C 代码

    在处理复杂问题时 我发现自己尝试了各种解决方案 尽管尽最大努力保持条理清晰 但代码可能会变得相当混乱 对象可能会被更改并且不再使用 而其他时候我可能会添加代码片段 这些代码片段最终不会被程序使用 但会占用空间和可能的内存 除了仔细阅读程序之