【发布时间】:2017-07-27 14:21:19
【问题描述】:
我有一个这样定义的 C 块数组:
void (^block1)() = ^void() {
doSomething1();
doSomething2();
};
void (^block2)() = ^void() {
doSomething3();
doSomething4();
};
// etc.
typedef void (^myBlockType)();
myBlockType arrayBlock[2];
arrayBlock[0] = block1;
arrayBlock[1] = block2;
但后来我试图从块内访问该 C 数组,类似于
void (^adjust)(int value) = ^void(int value) {
myBlockType myBlock = arrayBlock[value];
};
Xcode 在抱怨
不能引用块内的数组类型的声明
如果这是一个浮点数、整数等数组,则有this solution,但如何为 C 块数组执行此操作?
可以吗
myBlockType array = calloc(2, sizeof(myBlockType));
?这是正确的方法吗?在那种情况下,我该如何初始化这些值?
【问题讨论】:
-
两个问题(a)你没有说你为什么不使用
NSArray,这将有助于了解(b)链接的问题(不是answer) 为您提供了一个解决方案——它有一个 X 数组,你有一个 Y 数组,对程序没有任何影响——那你怎么办?如果您编辑要回答的问题可能是最好的(只需留下您所做的评论)。 -
对不起,我的 C 很烂,但我必须使用 C 数组,因为我必须与之交互的模块,而不是我编写的,都是用 C 编写的。除了我的 C 很烂之外,我的另一个问题是使用语法
array[i]无法访问另一个数组。我试过了,Xcode 到处抱怨。我猜该数组上的元素必须使用指针来访问,我不知道如何做到这一点,或者甚至如何用要开始的元素填充该数组。 -
继续...查看我对 C 知识贫乏的链接并没有让我在那里看到答案...如果您能回答我如何创建它、填充和获取项目,我会接受答案...是的,我知道,我的 C 很臭。谢谢
-
如果你正在这样做,你真的需要学习一些(更多——Objective-C 是一个超集,所以你必须知道一些)C。 “我的另一个问题是,使用语法
array[i]无法访问另一个数组” - 如果您要导入 C 数组 或 指针,那么此语法 将起作用 .如果“Xcode 到处发牢骚”,那就是错误。在尝试继续之前弄清楚是什么(如果需要,可以询问关于 SO 的问题)。 -
这就是我创建这个问题的原因。让我们希望有人知道如何做到这一点。还是谢谢。
标签: ios objective-c macos cocoa