如何在编译时填充NSArray?

2023-11-26

在 Objective-C 中,如何做类似的事情是

int array[] = {1, 2, 3, 4};

纯C语言?

我需要用 NSString 填充 NSArray,并尽可能减少开销(代码和/或运行时)。


不可能像在编译时那样创建数组。那是因为它不是“编译时间常数”。相反,您可以执行以下操作:

static NSArray *tArray = nil;

-(void)viewDidLoad {
    [super viewDidLoad];

    tArray = [NSArray arrayWithObjects:@"A", @"B", @"C", nil];
}

如果预编译这个确实很重要,那么我想您可以创建一个测试项目,创建您需要的数组(或任何对象),填充它,然后使用 NSKeyedArchiver 对其进行序列化(这会将其保存到文件中),然后然后将该文件包含在您的应用程序中。然后,您需要使用 NSKeyedUnarchiver 取消归档对象以供使用。我不确定这两种方法之间的性能差异是什么。此方法的优点之一是,如果您需要初始化包含大量对象的数组,则无需编写大量代码。

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

如何在编译时填充NSArray? 的相关文章

随机推荐

  • 用户输入+Ruby+正则表达式?

    我想为用户提供一个可以输入文本的文本区域 稍后我会将该输入与不同的输入进行匹配 如果匹配则将其提取 Flow 用户在文本区域中输入带回车的文本 文本保存在数据库的文本字段中 然后我使用以下内容来提取 text reply text repl
  • Python:这两个导入语句有什么区别?

    它们在功能上对我来说看起来都是一样的 使用其中一种与另一种相比有什么区别和优势吗 gt gt gt from datetime import datetime timedelta gt gt gt from datetime import
  • 从 com.apple.main-thread 入队(线程 1)崩溃 | iOS |斯威夫特 4.1

    上面发生了什么 从接收到的用户数据数组初始化领域模型 在后台线程中将所有模型一次性写入领域数据库中 如果领域模型已经存在 则通过创建副本进行更新 任何人都可以在这里指导我关于我做错了什么 我遇到了类似的问题 在这里 您可能正在从不同的线程访
  • 编译器对 PerformSelectorOnMainThread:@selector(delegateMethod) 发出警告

    我有一个包含一些 Web 服务功能的 NSOperation NSOperation 有一个委托 当操作结束时将向该委托发送消息 由于 NSOperation 位于不同的线程上 我必须像这样进行调用 delegate performSele
  • git:具有提交限制的累积差异

    git log有一些非常有用的提交限制选项 例如 no merges and first parent 我希望能够在为一系列提交生成累积差异补丁 stat numstat 时使用这些选项 使用这些命令 git log oneline fir
  • 为什么 const 限定变量被接受为 gcc 的初始值设定项?

    在最新版本的 gcc 或 clang 中编译此代码时 std c17 pedantic errors Wall Wextra static const int y 1 static int x y 然后我没有收到编译器诊断消息 即使我相当确
  • 如何用Java计算某人的年龄?

    我想在 Java 方法中以 int 形式返回以年为单位的年龄 我现在所拥有的是以下内容 其中 getBirthDate 返回一个 Date 对象 带有出生日期 public int getAge long ageInMillis new D
  • 如何等待elasticsearch重新索引?

    我有一个ElasticSearch带索引posts设置好的了 我会时不时地向其推送新文档 I want ElasticSearch仅当所有文档均已编制索引时才回复我的查询 我怎样才能做到这一点 在 ES 2 中 您可以调用refresh A
  • SQLITE:如果共享列,则将行合并为单行

    从上一篇文章中 我在 sqlite3 中有以下视图 CREATE View AttendeeTableView AS SELECT LastName FirstName as AttendeeName CompanyName PhotoUR
  • 编译器对虚函数调用的优化

    说明为什么虚拟分派在运行时发生的最流行的例子是当无法在编译时确定将创建哪个派生类时 例如 Base b rand 2 1 new Derived1 new Derived2 或者当它取决于用户输入时 假设情况并非如此 并且可以在编译时完全确
  • 如何使用实体框架查询外键对象?

    我正在尝试了解 Entity Framework 6 但遇到了一个问题 我已经能够在测试项目中重现该问题 A Movie has a Nameand a Revenue A Revenue has a GrossIncome public
  • “clear”是Javascript中的保留字吗?

    我只是花了很长时间才弄清楚我不应该使用clear 作为Javascript中函数的名称 Hello br
  • Winform另存为

    有谁知道任何文章或网站显示如何在 win 表单中创建 另存为 对话框 我有一个按钮 用户单击并序列化一些数据 然后用户使用此 另存为 框指定他们希望将其保存的位置 你的意思是像SaveFileDialog 来自MSDN示例 稍作修改 usi
  • C++ - 从文件读取到双精度[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我对编程还比较陌生 目前正在学习 C 课程 到目前为止我还没有遇到任何重大问题 我正在制作一个程序 其中 X 数量的评委可以打出 0 0 10 0 双倍 的分数 然后删除最高和最低的
  • 用 NSURLSession 替换 NSURLConnection

    我已经开始设计NetworkCommunication 我有一个设计NSOperation子类创建并管理自己的NSURLConnection The NSOperation子类由一个实例化NetworkManger类将其添加到NSOpera
  • 在 shell 脚本中读取 python 变量?

    我的 python 文件有这两个变量 week date 01 03 16 01 09 16 cust id 12345 我如何将其读入接受这两个变量的 shell 脚本中 我当前的 shell 脚本需要手动编辑 dt 和 id 我想将 p
  • 如何使用express-graphql抛出多个错误?

    在express graphql应用程序中 我有一个userLogin像这样的解析器 const userLogin async id password context info gt if id throw new Error No id
  • MongoDB:$elemMatch和$and在数组内查找对象有什么区别?

    查询运算符的使用有逻辑上的区别吗 and db collection find and array field1 someValue array field2 3 以及投影算子的用法 elemMatch db collection find
  • 在 JavaScript 中生成特定范围内的随机整数

    如何在 JavaScript 中生成两个指定变量之间的随机整数 例如x 4 and y 8将输出任何4 5 6 7 8 上面有一些例子Mozilla 开发者网络 page Returns a random number between mi
  • 如何在编译时填充NSArray?

    在 Objective C 中 如何做类似的事情是 int array 1 2 3 4 纯C语言 我需要用 NSString 填充 NSArray 并尽可能减少开销 代码和 或运行时 不可能像在编译时那样创建数组 那是因为它不是 编译时间常