初始化 Objective-C 类 ivar,它是一个 C 数组

2023-12-08

我的 Obj-C 类中有一个 ivar,它是一个 C 数组(我对使其成为 Obj-C 属性不感兴趣)。够简单的。现在,在我的类的 init 方法中,我想使用 C 数组简写 init 为该数组播种一些值,如下面的 .m 所示。但我相当肯定这是创建一个同名的局部变量而不是初始化我的实例变量。我无法将数组 init 放入接口中,也无法在实现中声明 ivar。我只是坚持进行某种深度复制还是有其他选择?

在 GameViewController.h 中

#define kMapWidth 10
#define kMapHeight 10

@interface GameViewController : UIViewController
{
    unsigned short map[kMapWidth * kMapHeight];
}

@end

在 GameViewController.m 中

- (id)init
{
    if ((self = [super init]))
    {
        unsigned short map[kMapWidth * kMapHeight] = { 
            1,1,1,1,1,1,1,1,1,1,
            1,0,0,0,0,0,0,0,0,1,
            1,0,0,0,0,0,0,0,0,1,
            1,0,0,0,0,0,0,0,0,1,
            1,0,0,0,0,0,0,0,0,1,
            1,0,0,0,0,0,0,0,0,1,
            1,0,0,0,0,0,0,0,0,1,
            1,0,0,0,0,0,0,0,0,1,
            1,0,0,0,0,0,0,0,0,1,
            1,1,1,1,1,1,1,1,1,1,
        };
    }
    return self;
}

你是对的。您正在做的是初始化局部变量,隐藏实例变量。您可以初始化一个本地数组并memcpy它到实例变量:

static const unsigned short localInit[] = { 
        1,1,1,1,1,1,1,1,1,1,
        1,0,0,0,0,0,0,0,0,1,
        1,0,0,0,0,0,0,0,0,1,
        1,0,0,0,0,0,0,0,0,1,
        1,0,0,0,0,0,0,0,0,1,
        1,0,0,0,0,0,0,0,0,1,
        1,0,0,0,0,0,0,0,0,1,
        1,0,0,0,0,0,0,0,0,1,
        1,0,0,0,0,0,0,0,0,1,
        1,1,1,1,1,1,1,1,1,1,
};

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

初始化 Objective-C 类 ivar,它是一个 C 数组 的相关文章

  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 在实例化对象之前是否可以检查故事板中是否存在标识符?

    在我的代码中我有这一行 但我想知道是否有办法检查是否 一些控制器 在我将它与 一起使用之前就存在实例化ViewControllerWithIdentifier 方法 如果标识符不存在 则应用程序崩溃 如果没有好的方法 这并不是一个大问题 我
  • 如果我使用自定义 UITableViewCell,是否需要设置 heightForRowAtIndexPath?

    如果我使用自定义 UITableViewCell 是否需要设置 heightForRowAtIndexPath 在我的 NIB 中 我已经设置了单元高度 当我覆盖 heightForRowAtIndexPath 时 单元格的内容不会出现 即
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 处理 UICollectionView 中的点击手势

    由于我无法使用任何框架来创建相册 因此我尝试使用 Collection View 创建自己的相册 但我一开始就陷入困境 我的目标是将网络服务中的所有图像显示到我的集合视图中 因为所有图像都已显示 下一步是当有人点击任何单元格时 我可以在新视
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • Repa 数组上的并行 mapM

    在我最近的work https github com bgamari mixture model with Gibbs sampling 我一直在充分利用RVar http hackage haskell org packages arch
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • Java:HTTP Post 在 Ruby on Rails 应用程序中创建新的“产品”

    在 Android 上使用 Apache HttpClient 如何使用 HttpPost 将数据发送到 RESTfull Ruby on Rails 应用程序 这是我的控制器 POST products def create produc
  • 为什么应该使用 XML CDATA 块?

    创建 XML 时 我想知道为什么使用 CDATA 块而不仅仅是转义数据 CDATA 块中是否存在无法转义并放置在常规标记中的内容
  • 在返回函数的变量之前如何等待承诺完成?

    我仍在努力兑现承诺 但由于这里的社区 我取得了一些进展 我有一个简单的 JS 函数来查询 Parse 数据库 它应该返回结果数组 但显然由于查询的异步性质 因此是承诺 函数在结果之前返回 给我留下了一个未定义的数组 我需要做什么才能让这个函
  • 将 Google 地图容器 DIV 宽度和高度设置为 100%

    我加载了 Google Maps API v3 并打印了 Google Mapdiv 但是当将宽度和高度设置为 100 并自动时 我看不到地图 这是 HTML 代码片段 div style height 100 width 100px ma
  • 如何使用 django 过滤器进行分页

    在 TemplateView 中使用 django filter 后 我遇到了分页问题 在使用 django filter 之前 我的分页工作正常 但现在它显示每个页面中的所有项目 我一直在互联网上查找 但没有找到一个好的解决方案 我该如何
  • org.openqa.selenium.WebDriverException:未知错误:Chrome 无法启动:崩溃(无头 Chrome)

    我在 centos 上运行 headless chrome headless chrome 版本为 2 38 google chrome stable 版本为 67 0 System setProperty webdriver chrome
  • 从 Firebase 检索位置并将标记放在适用于 Android 的谷歌地图 api 上

    我正在尝试创建应用程序 以便在按下保存按钮时在 firebase 上存储位置 并从 firebase 检索位置并显示地图中的所有图钉 我已经能够将具有纬度和经度的位置子项下的位置保存到 firebase 但我不知道如何获取值和引脚 我尝试按
  • 在 C# 中将科学计数法字符串转换为浮点型

    使用 C 将科学记数法字符串 例如 1 234567E 06 转换为浮点变量的正确方法是什么 Double Parse 1 234567E 06 System Globalization NumberStyles Float
  • jquery移动按钮文本自动换行

    我希望按钮中的文本在到达按钮末尾时自动换行 当我使用普通的 jquery mobile 样式时 它会截断我的文本并放置三个点 如下所示 here 我发现了一个小解决方法 这些点不会像这里一样显示 空白 正常对我不起作用 here 有人知道我
  • Firestore 获取数据时性能缓慢的问题

    与实时数据库相比 我在检索文档中存储的基本数据时遇到了 Firestore 性能缓慢的问题 比率为 1 10 使用 Firestore 第一次调用平均需要 3000 毫秒 this db collection testCol doc tes
  • 当第一个元素匹配时,jQuery inArray 不起作用

    我正在尝试检查我创建的数组 以确定数组 任何位置 中是否存在值 如果该值位于数组中的任何位置 则它需要执行一项操作 否则执行另一项操作 var Arr false false false false false It works with
  • 使用 PHP 进行图像识别

    我想知道是否有任何方法可以编写 PHP 脚本来读取图像并查找其中的特定元素 例如 图像将包含名称列表 并且对于每个名称 将有一个框 其中将出现特定字符 我希望能够获取所有名称并检查存在特定字符的名称 谢谢 您应该尝试使用已经制作的 OCR
  • SWF Flash Uploader 使 JSESSIONID 无效。有想法从服务器端或客户端恢复会话吗?

    我正在使用 SWF Uploader 上传文件 我在服务器端使用java Flash 自动使 Java 会话失效 SWF团队到目前为止还没有找到任何修复方法 经过一番搜索 我发现了这个link 其中讨论了在 ASP 中处理这个问题的想法 在
  • Java JFrame .setSize(x, y) 不起作用?

    当我执行这段代码时 会弹出一个小窗口 它的内部约为 116x63 整个尺寸 包括边框 约为 140x100 如何将内部设置为我所需要的 public static void graphics JFrame frame new JFrame
  • Android OpenCV 简单形状检测应用圆错误

    以下代码对于正方形可以正常工作 但对于三角形则不起作用 为什么 这是我的示例代码 public void onClick View v ImageView resim ImageView findViewById R id imgview
  • 目前哪些浏览器支持“范围”输入?

    我似乎无法在谷歌上找到任何关于此的信息 我知道你几乎可以排除 IE 我知道 webkit 支持它 但你还知道什么 好吧 这个问题已经存在很长一段时间了 但我还是想添加这个 关于浏览器支持的问题 好的来源始终是caniuse com网站 在这
  • 如何在 Cypress 中测试选择是否具有给定值? [复制]

    这个问题在这里已经有答案了 我对 Cypress 非常陌生 我想编写一个简单的测试 在页面首次加载时将选择框 下拉菜单 设置为特定状态 我不想将其设置为任何内容 网站上的说明清楚地显示了这一点 我只是想确保页面首次加载时选择框设置为应有的值
  • Swift2 从 Firebase 检索图像

    我正在尝试从 Firebase 读取 显示图像 我首先对图像进行编码 然后将此编码的字符串发布到 Firebase 这运行良好 当我尝试解码 Firebase 中的编码字符串并将其转换为图像时 我收到一个 nil 值异常 这就是我将图像保存
  • __DIR__ 不适用于 php include

    我正在尝试使用 php include 将一个 php 文件链接到另一个 结构是这样的 ROOT templates footer php main maps uk map php Using 代码链接绝对没问题 使用任一 or
  • 初始化 Objective-C 类 ivar,它是一个 C 数组

    我的 Obj C 类中有一个 ivar 它是一个 C 数组 我对使其成为 Obj C 属性不感兴趣 够简单的 现在 在我的类的 init 方法中 我想使用 C 数组简写 init 为该数组播种一些值 如下面的 m 所示 但我相当肯定这是创建