2012-04-08 13 views
5

明らかに、新しいObjective-Cリテラルはclang trunkに上陸しており、NDAの暗いベールを持ち上げています。NSArray、NSDictionary、NSNumberの "リテラル"をXcode 4.3で使用できますか? (LLVM 4.0)

私の質問 ...どのように私は、神の名では、Xcodeの⋜V4.3に(下記参照)これらの構造を使用することができます。もしそうでなければ、Xcode 4.4/OSX 10.8/LLVM 4.0のtrifectaを待っていて、幾分かの巧妙なカテゴリなどを介して、同じ機能をジェリーリグジッとすることができますか?

(y'allのすべてのために...これらの新しい構文は大いに感謝additional constructs for creatingNSArray, NSDictionary, and NSNumberがあるだろうということを意味知らない。)

+2

[Xcode 4.1でLLVM 3を使用する方法はありますか?](http://stackoverflow.com/questions/7361824/is-there-any-way-to-use-llvm- 3-in-xcode-4-1)は依然として大部分が適用されます。私はそこからリンクされた他の同様の質問があると思います。 –

答えて

5

私はLumumba Framework on githubを使って、以下の定義を持つSyntactic砂糖類型の完全なキットを用意しています。

#define $(...)  ((NSString *)[NSString stringWithFormat:__VA_ARGS__,nil]) 
#define $array(...) ((NSArray *)[NSArray arrayWithObjects:__VA_ARGS__,nil]) 
#define $set(...)  ((NSSet *)[NSSet setWithObjects:__VA_ARGS__,nil]) 
#define $map(...)  ((NSDictionary *)[NSDictionary dictionaryWithObjectsAndKeys:__VA_ARGS__,nil]) 
#define $int(A)  [NSNumber numberWithInt:(A)] 
#define $ints(...) [NSArray arrayWithInts:__VA_ARGS__,NSNotFound] 
#define $float(A)  [NSNumber numberWithFloat:(A)] 
#define $doubles(...) [NSArray arrayWithDoubles:__VA_ARGS__,MAXFLOAT] 
#define $words(...) [[@#__VA_ARGS__ splitByComma] trimmedStrings] 
#define $concat(A,...) { A = [A arrayByAddingObjectsFromArray:((NSArray *)[NSArray arrayWithObjects:__VA_ARGS__,nil])]; } 

ので、基本的には、代わりの

...

NSArray *anArray = [NSArray arrayWithObjects: 
    object, @"aWord", [NSNumber numberWithInt:7], nil]; 

それは

NSArray *anArray = $array(object, @"aWord", $int(7)); 

ああ、簡潔に...ちょうどです。

2

申し訳ありませんが、これはXcodeの4.4のみです。

+0

IDEのバージョンによってはどのような違いがありますか? Xcodeはこれとは関係ありません。コンパイラのバージョンによって異なります。 –

+1

これは非常に有用な答えではありません。構文のサポートは、利用可能なコンパイラから提供されます。基本的には、Xcodeでデフォルトとは異なるコンパイラを使用することができます。 –

+1

質問の尋ね方は、私はXcodeがIDEではなく、ダウンロードしたアプリケーションだと仮定します。このアプリケーションでは、llvm 3.0が提供されています(Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clangを参照) – niklassaers

関連する問題