Objective-C 类别性能

2024-04-12

如果我使用类别将 Objective-C 类的实现分解为多个@implementation块,这会使我的 iOS 应用程序生成的二进制文件更大或根本影响性能吗?

显然,你不能在运行时获取类的类别详细信息? https://stackoverflow.com/a/4916829/242933。那么,假设其他条件都相同,生成的二进制文件是否应该在有或没有类别的情况下都相同?

背景

我有一个自定义子类UIViewController这变得相当复杂。

iOS 开发者库:使用 Objective-C 编程:类别 https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html#//apple_ref/doc/uid/TP40011210-CH6-SW2

除了向现有类添加方法之外,您还可以使用类别将复杂类的实现拆分到多个源代码文件中。例如,如果几何计算、颜色和渐变等特别复杂,您可以将自定义用户界面元素的绘图代码放在单独的文件中,以实现其余部分。

关于类别的另一个好处(与#pragma marks,例如)是 Xcode 允许您编码折叠整个@implementation块(但不是两个之间的代码#pragma mark的)。如果您想将类别(可以选择折叠)保留在与主类相同的文件中,这非常有用。


链接器会尽可能合并类和类别。如果您的类及其类别在构建时都链接到同一个可执行文件中,则成本为零。

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

Objective-C 类别性能 的相关文章

随机推荐

  • React Native expo 图像选择器将图像上传到 firebase 存储(v9)崩溃

    我正在尝试将从 expo 图像选择器中选择的图像上传到 firebase 存储 因为我正在使用 expo 我检查了 expo 图像选择器 git 并找到了 firebase 的 uploadImageAsync 所以我复制了它并只做了一点更
  • Jquery 对话框仅打开一次

    全部 我知道有人问过这个问题 但以前的解决方案似乎不适用于我的情况 我有一个简单的表 每行都有许多记录 最后一列是删除超链接 我正在尝试使用对话框弹出并确认删除 如果我使用对话框所在的 div 的显式名称 我将其恰好放置在表格所在的 div
  • Google 通讯录广播/推送/通知/Hook API

    我正在寻找一种在编辑 删除或创建谷歌方面的联系人时接收来自谷歌的通知 广播的方法 我查看了 Google Contacts API 文档 但找不到任何内容 我认为一定有办法 例如Android 肯定不会轮询更改 Google Contact
  • 文本底部的几个像素被切断

    我实在搞不懂这个案子到底是怎么回事 在多行文本上 底部的几个像素被切除 Setting line height normal 为我工作
  • JavaScript - 如何等待/SetTimeOut/睡眠/延迟

    这又是我的剪刀石头布游戏 目前 用户无法看到发生了什么 因为在提示输入 石头 布或剪刀 后 他们会立即重新提示 问题是我怎样才能使程序延迟 以便他们至少可以读取正在发生的事情 我读到 JavaScript 中不存在 sleep 我正在尝试使
  • Laravel bigInteger 在关系中四舍五入为 int

    好吧 这是我的迁移 public function up Schema create instagrams function Blueprint table table gt bigInteger id gt unsigned gt pri
  • sql server 中 System.Version 的数据类型

    最好的储存方式是什么系统版本 http msdn microsoft com en us library system version aspx在 SQL Server 中 当我使用varchar类型时 按asc排序的结果是 1 0 0 0
  • 找不到方法 getAndroidDeviceInfo 的实现

    我正在尝试运行这个example https github com flutter plugins tree master packages device info example在插件页面中 我收到这个错误 I flutter 3273
  • 如何在重定向到我的应用程序后关闭 Android 浏览器?

    重定向到我的应用程序后如何关闭浏览器 有什么办法可以做到这一点吗 据我所知 不可能影响其他活动 例如关闭等
  • 删除列表中复杂度优于 O(n^2) 的子字符串

    我有一个包含许多单词 100 000 的列表 我想做的是删除列表中每个单词的所有子字符串 因此 为了简单起见 我们假设我有以下列表 words Hello Hell Apple Banana Ban Peter P e 以下输出是所需的 H
  • 同时获取logcat和内核日志

    我正在尝试通过以下命令获取日志 logcat 和 kmsg logcat v 时间 f dev kmsg cat proc 但是我不确定日志文件存储在哪里以及它的名称是什么 我如何识别它 好的 这是谷歌快速搜索的结果 安卓日志系统 http
  • Haskell 中的 undefined 和 Java 中的 null 有什么区别?

    两者的类型都是所有类型的交集 无人居住 两者都可以在代码中传递而不会失败 直到尝试评估它们为止 我能看到的唯一区别是 在 Java 中 有一个漏洞允许null仅针对一个操作进行评估 即引用相等比较 而在 Haskell 中undefined
  • 设置特定文件的 AWS S3 过期时间

    我阅读了 PHP AWS SDK 文档 https docs aws amazon com aws sdk php v2 api class Aws S3 S3Client html https docs aws amazon com aw
  • 二分布局Gephi 0.9.1

    我的问题简单得令人尴尬 how do i plot a bipartite graph in Gephi with a layout like the one you see in the attached image 我真的无法在Geph
  • 是否可以通过显式类型转换将基类对象分配给派生类引用?

    是否可以在 C 中使用显式类型转换将基类对象分配给派生类引用 我已经尝试过了 它会产生运行时错误 不可以 对派生类的引用实际上必须引用派生类的实例 或 null 否则你会期望它如何表现 例如 object o new object stri
  • Jetty 返回 403 Forbidden

    您好 我正在将我的网络应用程序从 tomcat 移植到 Jetty 我正在使用 Jetty runner 来启动它 我使用以下命令来启动 Jetty java jar jetty runner jar port path url path
  • psql 显示 ansi 彩色文本

    My psqlrc有以下选项 setenv LESS iMSx4 FXR setenv PAGER less pset pager always 我想要着色的 psql 输出是 x1B 35m x1B 0m x1B 35mr x1B 0m
  • 检测Python字符串是数字还是字母[重复]

    这个问题在这里已经有答案了 如何检测字符串中的数字或字母 我知道您使用 ASCII 代码 但是哪些函数利用了它们呢 检查字符串是否为非负的数字 整数 和字母 您可以使用str isdigit https docs python org 2
  • 使用 async/await 锁定资源

    我有一个应用程序 其中有一个可由多个客户端访问的共享资源 运动系统 我有一些单独的操作 需要在移动期间访问系统 并且如果同时请求冲突的操作 则应抛出 繁忙 异常 我还有序列器 它们需要获得对运动系统的独占访问权限 以执行多个操作 并穿插其他
  • Objective-C 类别性能

    如果我使用类别将 Objective C 类的实现分解为多个 implementation块 这会使我的 iOS 应用程序生成的二进制文件更大或根本影响性能吗 显然 你不能在运行时获取类的类别详细信息 https stackoverflow