Upload
wataru-kimura
View
3.577
Download
0
Embed Size (px)
DESCRIPTION
2012年3月にclangのtrunkに導入された、NSArrayやNSDictionaryなどへの新しい構文・リテラルについて調べてみた。 追加説明の記事 http://d.hatena.ne.jp/kimuraw/20120317/p1 Cocoa勉強会 #51 2012-03-17
Citation preview
新しいリテラルてばどーすか?
Cocoa勉強会�#51�/�2012-03-17�/�⽊村渡
Powered�by�Rabbit�1.0.6�and�COZMIXNG
今⽇のお題
Objective-Cに
新しく導⼊されるかもな
リテラル表記について、
みんなの感想を聞きたい!
注
今⽇お話することは、3/16時点の
clang�trunk�r152917�を
元にしています。
clang�r152137
Add�clang�support�for�new�Objective-C�literal�syntax�for�NSDictionary,�NSArray,NSNumber,�and�boolean�literals.�...http://llvm.org/viewvc/llvm-project?view=rev&revision=152137
ついこないだの2012-03-06
実際どういう書きかた?
test/SemaObjC/をみたり、
test/ARCMT/の.mと.m.resultを
⽐べてみるとか。
FileMergeしてみる
objcmt-subscripting-literals.m
FileMergeしてみる
objcmt-numeric-literals.m
例�-�NSArray
@[ obj1, obj2 ]// [NSArray // arrayWithObjects:obj1, obj2, nil]
ary[1]// [ary objectAtIndex:1]
例�-�NSDictionary
@[ key1 : val1, key2 : val2 ]// [NSDictionary// dictinaryWithObjectsAndKeys:// val1, key1, val2, key2, nil]
keyとvalueの順が、、、
例�-�NSDictionary
dict[key]// [dict objectForKey:key]
dict[key] = val// [dict setObject:val forKey:key]
例�-�NSNumber
@123// [NSNumber numberWithInt:123]
@-123// [NSNumber numberWithInt:-123]
例�-�NSNumber
@123.0// [NSNumber numberWithFloat:123.0]
@YES// [NSNumber numberWithBool:YES]
@YESはちょっとキモチワルイかも
ちょっと疑問
ary[1]; dict[key];
どうやって区別してる?
インデックスが数値�or�id?
レシーバのクラス?
ちょっと疑問
ary[1]; dict[key];
どうやって区別してる?
インデックスが数値�or�id?�←
レシーバのクラス?
test/SemaObjC/�いじって試してみた
なんと
NSArrayやNSDictionaryでなくても
objectAtIndexedSubscript:(NSInteger)index
objectForKeyedSubscript:(id)key
といったメソッドがあれば
getter/setter表記が使える!
感想
RubyとかPythonやってる⼈的には
なちゅらるな感じ
感想
コンパイラ⼿持ちにしたら
もう、やりたいほうだいっすね。
まあでも
正常な進化だとは思うのですよ。
感想
Cocoaはオブジェクトと
非オブジェクトが共存してるけど
そういうとこのややこしさが
またクローズアップされるかも。
NSNumberとか。
ということで
イイ!�or�これはないわ…
こういう機能もほしい
などなど聞かせてください。
おまけ
試してみたい!って⼈は
Clang�-�Getting�Startedhttp://clang.llvm.org/get̲started.html
make�30分くらい�@�MBP�2009
終
Powered�by�Rabbit�1.0.6�and�COZMIXNG