2012年02月24日

XcodeのCommand Line ToolプロジェクトでBlocks @ Mac

少々Blocksで填ったので、メモしておきます。

iOSのプロジェクトでは以下の様に書いても問題有りません。おそらくこれで普段は問題ないはず。

NSComparator comp = ^(id obj1, id obj2) {
if([[obj1 age]intValue] < [[obj2 age]intValue]){
return NSOrderedAscending;
}
return NSOrderedDescending;
};

NSArray *sorted = [array sortedArrayUsingComparator:comp];

しかし、Command Line Toolのプロジェクトだとブロックポインターのタイプが非互換だ見たいなメッセージが出て、ビルド出来ません。で書き換えた形がコレ。

NSComparator comp = ^(id obj1, id obj2) {
if([[obj1 age]intValue] < [[obj2 age]intValue]){
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedDescending;
};

NSArray *sorted = [array sortedArrayUsingComparator:comp];

返値をNSComparisonResultでキャストしないとダメっぽい。ヘッダーを見ても違いがないので、型チェックが厳しいだけなのかな。

閲覧数: 1217 / はてなブックマークusers

blog comments powered by Disqus

関連日記

アマゾン広告

この日記ページは閲覧数などの条件に応じて、閲覧制限を行っています。他からリンクしていただいても、そのリンクから辿った閲覧者が当ページの内容をご覧頂けない場合があります。ご了承下さい。

▼日記検索

▼ Mac

▼ Shade

▼ 3D

▼ Flash

▼ ゲーム

▼ ウェブ

▼ 食

▼ 音楽

▼ 映画

▼ デジカメ

▼ 雑

▼ Windows

▼ Linux

▼ 携帯電話

▼ 株

▼ テレビ

▼ 広島

▼ 電子工作

▼ iOS

▼ 最近のトラックバック

▼ランキング

▼関連サイト