僕のYak Shavingは終わらない

車輪の再発明をやめたらそこには壮大なYakの群れが

iOS開発でBlocksKitを使うよ!(現時点2012/10/24での最新)

github
https://github.com/pandamonia/BlocksKit

別にこんな詳細にやらなくてもいいかなぁって思ったんですけどテキストだけの解説で入れられない人もいたようなので、画像を使ってできるだけわかりやすく導入の流れを書いてみました。何かあったらコメント欄からどうぞ。

またホントはCocoaPodsを使った方がモダンなんだろうなぁと思いつつ、色々な問題がありそうなので普通にダウンロードしていれることにしました。

インストール

参考は↓
BlocksKit
Flameworkとliblaryの2つの入れ方があるんですけど今回はliblaryの方でやってます。

  1. まずここからBlocksKitをダウンロード(今のバージョンならarmv7sに対応してるようです)
  2. 解凍するとこんな感じになるf:id:kazuph1986:20121024163437p:plain
  3. 自分のプロジェクトに持ってくる。今回はlibBlocksKit.aをプロジェクトディレクトリの直下に、HeadersをVendorというディレクトリをつくってその下にいれましたf:id:kazuph1986:20121024172155p:plain
  4. TargetのBuild PhasesにあるLink Binary Wity LibraiesにlibBlocksKit.aをドラッグアンドドロップするf:id:kazuph1986:20121024165045p:plain
  5. 同じに場所にCoreGraphics, Foundation, MessageUI, UIKitのうち入ってないフレームワークがあったら+ボタンを押して追加しましょうf:id:kazuph1986:20121024165305p:plain
  6. Build SettingsにあるOhter Linker Flagsを見つけて"-ObjC -all_load"を追加しますf:id:kazuph1986:20121024165908p:plain
  7. 同じくBuild SettingsにあるHeader Search Pathsの項目に"$(SRCROOT)/Vendor/Headers"を追加f:id:kazuph1986:20121024170300p:plain
  8. prefixに"#import "を追加するf:id:kazuph1986:20121024170529p:plain
//
// Prefix header for all source files of the 'TestBlocksKit' target in the 'TestBlocksKit' project
//

#import <Availability.h>

#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #import <BlocksKit/BlocksKit.h>
#endif

実装

http://d.hatena.ne.jp/h_mori/20120220/1329691866
実装はここが参考になります。

試しにUIAlertView+BlocksKitだけ試してみます

- (IBAction)pushAlertButton:(id)sender {
    UIAlertView *alert = [UIAlertView alertViewWithTitle:@"Alert" message:@"UIAlertView Test"];
    [alert addButtonWithTitle:@"Action" handler:^(void) {
        NSLog(@"Action");
    }];
    [alert addButtonWithTitle:@"Close"];
    [alert show];
}

ちゃんと動いているようです。
codeはここに上げておきます。

https://github.com/kazuph/iOSProgramingSamples