22
新しいリテラルてば どーすか? Cocoa勉強会�#51�/�2012-03-17�/�⽊村渡 Powered�by�Rabbit�1.0.6�and�COZMIXNG

new Objctive-C literal syntax

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

Page 1: new Objctive-C literal syntax

新しいリテラルてばどーすか?

Cocoa勉強会�#51�/�2012-03-17�/�⽊村渡

Powered�by�Rabbit�1.0.6�and�COZMIXNG

Page 2: new Objctive-C literal syntax

今⽇のお題

Objective-Cに

新しく導⼊されるかもな

リテラル表記について、

みんなの感想を聞きたい!

Page 3: new Objctive-C literal syntax

今⽇お話することは、3/16時点の

clang�trunk�r152917�を

元にしています。

Page 4: new Objctive-C literal syntax

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

Page 5: new Objctive-C literal syntax

実際どういう書きかた?

test/SemaObjC/をみたり、

test/ARCMT/の.mと.m.resultを

⽐べてみるとか。

Page 6: new Objctive-C literal syntax

FileMergeしてみる

objcmt-subscripting-literals.m

Page 7: new Objctive-C literal syntax

FileMergeしてみる

objcmt-numeric-literals.m

Page 8: new Objctive-C literal syntax

例�-�NSArray

@[ obj1, obj2 ]// [NSArray // arrayWithObjects:obj1, obj2, nil]

ary[1]// [ary objectAtIndex:1]

Page 9: new Objctive-C literal syntax

例�-�NSDictionary

@[ key1 : val1, key2 : val2 ]// [NSDictionary// dictinaryWithObjectsAndKeys:// val1, key1, val2, key2, nil]

keyとvalueの順が、、、

Page 10: new Objctive-C literal syntax

例�-�NSDictionary

dict[key]// [dict objectForKey:key]

dict[key] = val// [dict setObject:val forKey:key]

Page 11: new Objctive-C literal syntax

例�-�NSNumber

@123// [NSNumber numberWithInt:123]

@-123// [NSNumber numberWithInt:-123]

Page 12: new Objctive-C literal syntax

例�-�NSNumber

@123.0// [NSNumber numberWithFloat:123.0]

@YES// [NSNumber numberWithBool:YES]

@YESはちょっとキモチワルイかも

Page 13: new Objctive-C literal syntax

ちょっと疑問

ary[1]; dict[key];

どうやって区別してる?

インデックスが数値�or�id?

レシーバのクラス?

Page 14: new Objctive-C literal syntax

ちょっと疑問

ary[1]; dict[key];

どうやって区別してる?

インデックスが数値�or�id?�←

レシーバのクラス?

test/SemaObjC/�いじって試してみた

Page 15: new Objctive-C literal syntax

なんと

NSArrayやNSDictionaryでなくても

objectAtIndexedSubscript:(NSInteger)index

objectForKeyedSubscript:(id)key

といったメソッドがあれば

getter/setter表記が使える!

Page 16: new Objctive-C literal syntax

感想

RubyとかPythonやってる⼈的には

なちゅらるな感じ

Page 17: new Objctive-C literal syntax

感想

コンパイラ⼿持ちにしたら

もう、やりたいほうだいっすね。

まあでも

正常な進化だとは思うのですよ。

Page 18: new Objctive-C literal syntax

感想

Cocoaはオブジェクトと

非オブジェクトが共存してるけど

そういうとこのややこしさが

またクローズアップされるかも。

NSNumberとか。

Page 19: new Objctive-C literal syntax

ということで

イイ!�or�これはないわ…

こういう機能もほしい

などなど聞かせてください。

Page 20: new Objctive-C literal syntax

おまけ

Page 21: new Objctive-C literal syntax

試してみたい!って⼈は

Clang�-�Getting�Startedhttp://clang.llvm.org/get̲started.html

make�30分くらい�@�MBP�2009

Page 22: new Objctive-C literal syntax

Powered�by�Rabbit�1.0.6�and�COZMIXNG