new Objctive-C literal syntax

Preview:

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

Recommended