0

いくつかの JS をネイティブの ObjC コードに移植します。構造体は配列内に収まらないため、ラップする必要があります。

JS コードは次のようになります。

var bezierVertices = [{0: 14},{10: 32},{24: 16}];

プレーンで簡単な JS: 匿名オブジェクトの配列。

私は次の要件に縛られています: コードをできるだけコンパクトにすること。これは、 [NSValue valueWithCGPoint:ccp(x,y)] を使用して NSValue の NSArray を提案するときに拒否されたことを意味します。

malloc の方法を下ることも、この基準には適合しません。彼らは、上記の JS と同じくらいコンパクトなものを望んでいます。

@"0:14;10:32;24:16"; のような NSString のような醜いものを書く前に。それは分割され、ループで解析されます。SO は何かをきれいにするのに役立つと思いました:) .mm を使用することが許可されているため、ObjC++ ソリューションも同様に適合しますが、C++ についてはまったく知識がありません...

ありがとう!J.

4

2 に答える 2

4

彼らは上記のJSと同じくらいコンパクトなものを望んでいます

「彼ら」は誰ですか?「彼ら」は、Objective-Cがコンパイルされた言語であり、ソースコードの「コンパクトさ」がほとんど無関係であることを理解していますか?

とにかく、暴言を吐きます。次のようにCGPointのC配列を作成できます。

CGPoint myArray[] = {{0.0, 14.0}, {10.0, 32.0}, {24.0, 16.0}}; 

これは、標準のC配列初期化子です。次のような要素の数を取得します。

int nElements = sizeof myArray / sizeof(CGPoint);
于 2012-05-23T12:22:12.927 に答える
1

頂点の可変長配列を管理する必要がある場合、C++ はstd::vector<CGPoint>.

于 2012-05-23T12:25:41.017 に答える