是否需要将原始类型键入枚举?

2023-12-26

我正在浏览NSString查看头文件,看看 Apple 如何编写枚举,并发现了这段代码:

enum {
    NSStringEncodingConversionAllowLossy = 1,
    NSStringEncodingConversionExternalRepresentation = 2
};
typedef NSUInteger NSStringEncodingConversionOptions;

这给我留下了几个问题。

  1. 他们为什么使用匿名枚举?这种方法有优势吗?
  2. Is the typedef NSUInteger NSStringEncodingConversionOptions;line 是一个正常包含的好主意,或者它只是在这里使用,因为他们声明了一个匿名枚举?

这个看起来很奇怪的定义是为了在 64 位和 32 位环境中清楚地定义代码中枚举的位宽和符号性。这个里面有详细的介绍苹果文档 http://developer.apple.com/library/mac/documentation/cocoa/conceptual/Cocoa64BitGuide/64BitChangesCocoa/64BitChangesCocoa.html#//apple_ref/doc/uid/TP40004247-CH4-SW8,但让我在这里写下摘要。

Apple 过去使用过标准的 typedef 枚举,如下所示

typedef enum { .... } NSEnumTypeName;

在(重新)引入 64 位-32 位通用二进制文件之前。 (我使用“re”是因为 FAT 二进制文件从 NeXTStep 时代起就已经存在了。无论如何。)

然而,这使得 typedef 类型的位宽和符号性NSEnumTypeName按照中指定的实现定义官方标准 http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf,见 6.7.2.2.4。

这使得编写可以使用各种编译器和各种位宽进行编译的代码变得更加棘手。

因此,Apple 从标准枚举切换到匿名枚举,并将相应的 typedef 转换为特定的有符号/无符号整数类型。

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

是否需要将原始类型键入枚举? 的相关文章

  • 如何在pop UIViewController中删除UIParallaxDimmingView?

    我有一个UIViewController vc1这是在之后推送的UIViewController vc2 Both vc1 and vc2具有透明背景 问题 当我尝试弹出时vc2使用交互式弹出手势 从边缘平移 在我看来堆栈显得很神秘UIPa
  • UITableViewCell 内的 UIPageViewController

    嘿我想问如何在 UITableViewCell 内实现 UIPageViewController 我一直在阅读周围的内容 但到目前为止似乎对任何尝试的人都不起作用 我希望得到一些提示 不需要完整的答案 谢谢 目前还不清楚你到底想做什么 但让
  • 获得 IAP 产品响应后出现 Objective-C 错误

    此代码来自 Phonegap 代码 IAP 插件 错误发生在 发送的js 之后的代码行上 除了最后一个 nil 之外 发送到该函数的所有元素均非零 我什至将它们注销以确保它们已发送 该代码直接来自插件 https github com us
  • 在 UICollectionView 下面插入子视图

    当我在 UICollectionView 下方添加子视图时 有时子视图会显示在 UICollectionView 单元格上方 这是子视图插入代码 self collectionView insertSubview self garmentV
  • UITableView 无法一直滚动到底部[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我只是好奇 我做了一些UITable
  • UIView 和 UITableView 中的 UITapGestureRecognizer 冲突

    我有一个UIView我在其中添加了一个UITapGestureRecognizer 在该视图中 我还有一个子视图 其中基本上是某种UITableView 问题是为什么不UITableView识别连续点击 而是始终转到点击手势识别器的处理程序
  • 方法调用中的插入符[重复]

    这个问题在这里已经有答案了 我正在阅读本教程 并遇到了这行代码 这让我感到困惑 localSearch startWithCompletionHandler MKLocalSearchResponse response NSError er
  • xcode“将源编译为”覆盖特定文件

    我有一个项目 必须将 编译源为 值设置为 Objective C 不 根据文件类型 在我的主项目中不起作用 我从框架 特别是 OpenFeint 获得的文件有问题 该文件在编译为 Objective C 时出现编译错误 error poin
  • Objective-C 使用字符串池吗?

    我知道Java https stackoverflow com questions 3801343 what is string pool in java and C http msdn microsoft com en us librar
  • 禁用 iPhone 4S / 新 iPad 键盘上的听写按钮

    我们的应用程序是一个医疗保健应用程序 我们的应用程序中有一个符合 HIPAA 标准的语音识别器 所有听写都可以通过它进行 医院不希望医生意外开始与不符合 HIPAA 标准的 Nuance Dragon 服务器进行对话 因此 我正在寻找可以抑
  • 在 Swift 中使用 commitEditingStyle 动态删除 UITable 部分

    我正在处理一个无法解决的问题 我有一个来自客户数据库数组的名称表 每个客户在其他数据成员中都有一个名称属性 我可以成功删除某个部分中的行 但我不能删除该部分 当该部分中的最后一行被删除时 该部分必须消失 I got NSInternalIn
  • typedef 结构体指针定义

    我对 C 很陌生 并且对所有指针的东西都有一些问题 我写了这段代码 typedef struct edgeitem double weight EDGE ITEM pEDGE ITEM also declaration of a point
  • AppDelegate 的变量用作全局变量不起作用

    我想使用我的 AppDelegate 来存储任何其他类都可以访问的对象 我已经像这样声明了这个 AppDelegate interface MyAppDelegate UIResponder
  • Java:枚举:NoClassDefFoundError

    我在 J2EE 应用程序中使用枚举时遇到问题 我在无状态服务 bean 内的 switch case 中使用枚举 在运行时 我在 switch 语句上看到以下异常 Caused by java lang NoClassDefFoundErr
  • 为什么没有收到(UDP 多播)数据包?

    所以 我一直试图弄清楚为什么这不起作用 但我没有任何线索 我已经成功地从 iPhone 发送数据包并在 Mac 上接收它们 根据 tcpdump 我的 mac 正确发送数据包 此外 如果我在模拟器中运行它 它工作得很好 这让我相信这是一个网
  • 如何将 UIImageView 裁剪为自定义形状

    用户是否可以在该位周围画一条虚线 圆圈 UIImageView他们希望裁剪到 然后为UIImageView调整大小到这些点 这有点像 Photoshop 中的套索 选取框效果 更新 从 iOS 8 x 开始 UIImageView 提供了m
  • 断点条件错误

    我已经根据条件设置了断点 event name isEqualToString Some Name 这很好用 但是 当我尝试添加另一个带有条件的断点时 part name isEqualToString Some Value With A
  • let/var 如何解决可变性? [复制]

    这个问题在这里已经有答案了 我没有任何问题 我只是想对有关可变性的问题进行一些澄清 在 Objective C 中我们会使用例如NSMutableArray得到一个可变数组和NSArray得到一个不可变的 我对两者的内部运作了解不多 但据我
  • 如何将unix时间戳转换为iphone中的nsdate [重复]

    这个问题在这里已经有答案了 可能的重复 从 Unix 时间戳创建 NSDate https stackoverflow com questions 5827240 create nsdate from unix timestamp 我有一个
  • 由于 2.23 导致 iOS 应用程序被拒绝 - iOS 数据存储指南

    以下是 Apple 关于拒绝的消息 2 23 应用程序必须遵循 iOS 数据存储指南 否则将被拒绝 2 23 详情 在启动和内容下载时 您的应用程序会存储 6 5 MB 这并不意味着 遵守 iOS 数据存储指南 下一步 请验证只有用户使用您

随机推荐

  • 在 Nest.js 中访问 Stripe webhook 的原始主体

    我需要在 Nest js 应用程序中访问来自 Stripe 的 webhook 请求的原始正文 下列的this https github com stripe stripe node blob master examples webhook
  • 如何检查ACTION_SEND意图是否已启动?

    我的应用程序使用标准的简单文本共享 在我的测试中 我想检查我的活动是否启动了共享意图 是否可以 我在用ActivityInstrumentationTestCase2 test 活动 final Intent sendIntent new
  • Python中使用factorize()后如何获取原始值?

    我是一个初学者 尝试使用 Python 中的随机森林 训练和测试数据集创建预测模型 train ALLOW BLOCK 可以取 4 个期望值 所有字符串 中的 1 个 test ALLOW BLOCK 是需要预测的 y pd factori
  • “:”和“|”之间的区别在 R 线性建模中

    在R中构建线性模型时 以下两种说法有什么区别 lm y x z lm y x z The lm功能文档 http stat ethz ch R manual R devel library stats html lm html记录了 运算符
  • 将数据写入 CSV 时如何排除标题

    我正在从一个写入我的数据public class到 CSV 文件 由于我想附加数据 因此我想排除标头的导入 只导入类中的数据 我下面的代码导入标头和数据 希望得到帮助 谢谢 Record cs 我的班级 public class Recor
  • 如果 Python 字典理解覆盖某个键,则会引发错误

    有没有办法让字典理解在覆盖某个键时引发异常 例如 我希望以下错误 因为键有两个值 a gt gt gt k v for k v in a1 a2 b3 a 2 b 3 我意识到这可以通过for环形 有没有办法在保持理解语法的同时做到这一点
  • 为什么整数除法代码给出错误的答案? [复制]

    这个问题在这里已经有答案了 我在 Java 中有一个非常简单的划分 它是产品数量 每小时产量 但是每当我进行这种划分时 我都会遇到奇怪的错误 float res quantity standard 我已经用几个值尝试了上述除法 但总是出错
  • 如何将函子分配给函数指针?

    一般来说 我可以将函数对象分配给函数指针吗 我想做这样的事情 include
  • 将项目从 Delphi 3 移至 Delphi 2010

    我被要求重新打开一个我在 1998 99 年用 Delphi 3 编写的项目 此后该项目一直稳定运行 我在一台老化的 Windows 98 机器上有 Delphi 3 代码库 它的存在只是为了让这个项目保持活力 显然 我想在进行任何重大修改
  • 如何在 PostgreSQL 中获取数组的最后一个元素?

    The 关于数组的 PostgreSQL 文档 http www postgresql org docs 9 2 static arrays html提供了一个使用示例 1 访问数组的最后一个元素 然而虽然SELECT arr 2 3 产生
  • Notepad++ 查找文件名

    在Notepad 中 我有时需要打开存在于不同文件夹中的文件 这需要时间才能转到文件夹 并通过Light Explorer搜索文件 Notepad 有什么功能或插件可以让我直接打开文件吗 假设 如果我需要打开一个名为 notepad php
  • 检查元素是否包含#shadow-root

    是否可以查看 Shadow DOM 元素是否存在 我不太关心操纵它 甚至不是真正针对它 我理解封装的原因 但我希望能够根据 Shadow DOM 元素是否存在来设置常规 DOM 中其他元素的样式 有点像 if element id shad
  • Win32/MFC 从客户端矩形获取窗口矩形

    我知道有一个函数可以接受客户端矩形 并将其转换为窗口矩形 我只是找不到 记住它 有谁知道它是什么 它会做类似的事情 const CRect client 0 0 200 200 const CRect window ClientRectTo
  • 插件“FEDERATED”已禁用

    我尝试使用 easyPHP 启动 MySQL 响应是日志文件的警报窗口 主要错误是 通过网上研究 我发现解决方案是将联合选项添加到my ini文件 我这样做了 但它仍然不起作用 以下是日志文件的摘录 以了解更多信息 2013 05 03 1
  • 获取点击元素的ID

    div div div div 尝试此方法来获取单击的元素的 ID 并发出警报 我确信这是我所缺少的一些非常基本的东西 有人可以帮忙吗 这实际上非常基本 停止使用内联事件处理程序
  • 每次尝试以特定顺序循环 3 个线程

    我的问题是如何让一个线程运行 然后再运行一次 然后再次运行 然后它会重复本身 我有一个主文件 private static ThreadManager threadManager public static void main String
  • 通用选择不适用于位类型

    基于这个答案 https stackoverflow com a 18469483 1993545 我尝试为我的桌子创建一个选择 ALTER PROCEDURE Einrichtung Select Parameters with defa
  • 如何在 Jetpack Compose 中向图标添加阴影/边框/高度

    我想在 Jetpack compose 中为我的图标添加阴影 以便图像和文本具有 大致 相似的阴影 Text text HAS SHADOW style MaterialTheme typography body2 copy shadow
  • 打印汉字的ESC/POS命令

    打印机型号 爱普生TM T88V ESC POS命令指南 见P 115 http download delfi com SupportDL Epson Manuals TM T88IV Programming 20manual 20APG
  • 是否需要将原始类型键入枚举?

    我正在浏览NSString查看头文件 看看 Apple 如何编写枚举 并发现了这段代码 enum NSStringEncodingConversionAllowLossy 1 NSStringEncodingConversionExtern