2016-08-31 63 views
0

我不是很熟悉的OBJ-C,我试图做的事情很简单,但无法弄清楚各地的表情,括号中的语法等Objective-C的语法问题

我:

type foo = { 
    thing(text), 
    .paramA = 4.0f, 
    .paramB = 20.0f, 
}; 

我想简单地包裹在三元并使其零在某些情况下,但无论我尝试什么(在括号包裹它,牙套等),X-代码抱怨我因各种原因:

type foo = condition 
    ? { 
    thing(text), 
    .paramA = 4.0f, 
    .paramB = 20.0f, 
    } 
    : nil; 

有帮助吗? :)

+2

除了术语'nil'外,我没有在代码中看到任何与Objective-C类似的东西。我实际上不知道它是什么语言(我不知道使用关键字'type'的语言),但它可能是C. – matt

回答

-1

你的第一个代码示例不是Objective-C;它是C(也许)。

你的第二个代码示例试图引进nil,但在C.没有nil可以永远分配nil其中C类的预期。 nil只能在需要Objective-C对象的地方分配,并且您没有Objective-C对象。你可以扩展一个点并将它分配到C指针所在的位置(因为这是一个对象的表达方式),但是你也没有C指针。

+1

nil通常简单地定义为(void *)0,所以实际上可以赋给任何C指针。只是一个约定来表示对象的NULL值。 – Macmade

+0

@Macmade好的,很好。他没有一个物体,他也没有C指针。 – matt

0

什么你想要做的是很难在的ObjectiveC(但几乎微不足道,就像你已经在迅速输入的)的一对夫妇的原因

  1. 我们不能创建的元组(字符串,浮动,浮动)。我们可以声明一个结构,但遗憾的是由于ARC我们确实不能在一个结构串部件(不再*叹气)

  2. 在的ObjectiveC只有指针类型可以设置为无,结构或原语(值类型)不能,因此您需要处理指向该结构或原语的指针。

出于这些原因,最简单的方法,尽管它看起来有些可笑矫枉过正,就是要让类型的类(有您需要的三个变量属性),因此foo将类型类型*

的指针

最好。