2016-08-31 8 views
0

Iがobj-Cに非常に精通していないよと非常にシンプルな何かをしようとしていますが、表現、中括弧の周りの構文を把握することはできません、Objective-Cの構文などの問題

私が持っている:

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

私は単純に3進数でラップしていくつかのケースで無意味にしようとしていますが、私が何を試しても(括弧、中括弧などで囲んで)、x-codeはさまざまな理由:

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

help? :)

+2

「nil」という言葉を除いて、あなたのコードでObjective-Cのように遠くに見えるものは表示されません。私は実際にどの言語か分かりません(キーワード 'type'を持つ言語はわかりませんが)。 – matt

答えて

-1

最初のコード例はObjective-Cではありません。それはCです(たぶん)。

あなたの2番目のコード例は、nilを導入しようとしますが、C型が期待されている場所がnilを割り当てることはできませんC.にはnilはありません。 nilは、Objective-Cオブジェクトが必要で、Objective-Cオブジェクトを持たない場合にのみ割り当てることができます。あなたはポイントを伸ばすかもしれませんし、Cポインタが期待されるところに(オブジェクトがどのように表現されるのか)それを割り当てるかもしれませんが、あなたはCポインタも持っていません。あなたが何をしようとして

+1

通常、nilは(void *)0と定義されていますので、実際には任意のCポインタ。オブジェクトのNULL値を示す規約。 – Macmade

+0

@Macmade OK、大丈夫です。彼はオブジェクトを持っていないし、Cポインタも持っていない。 – matt

0

はobjectiveCでは困難である(しかし、ほとんど些細な、あなたは迅速にそれを入力したまったく同じ)の理由

  1. のカップルのために私たちは、タプル(文字列を作成することはできません、フロート、フロート)をオンザフライで実行します。私たちは構造体を宣言することはできますが、残念ながらARCのために構造体に文字列メンバを持たせることはできません

  2. ポインタ型はnil、structまたはprimitive(値の型)はできませんので、その構造体またはプリミティブへのポインタを扱う必要があります。これらの理由から最も簡単な方法については

、それはとんでもないやり過ぎのように見えるかもしれないにも関わらず、*タイプ(あなたが必要とする三つの変数のためのプロパティを持つ)クラスにするために、したがって、fooはType型のポインタになりますです

ベスト。