Skip to content

Instantly share code, notes, and snippets.

View taka328w's full-sized avatar

Takahiro Ooishi taka328w

  • mitsubachiworks inc.
View GitHub Profile
@taka328w
taka328w / NSObject+Extensions.m
Created April 28, 2012 14:52
NSObject+Extensions.m
#import "NSObject+Extensions.h"
@implementation NSObject (Extensions)
- (void)performBlock:(VoidBlock)block {
[self performSelector:@selector(executeBlock:) withObject:[block copy]];
}
- (void)performBlock:(VoidBlock)block afterDelay:(NSTimeInterval)delay {
[self performSelector:@selector(executeBlock:) withObject:[block copy] afterDelay:delay];
@taka328w
taka328w / NSObject+Extensions.h
Created April 28, 2012 14:42
NSObject+Extensions.h
@interface NSObject (Extensions)
typedef void (^VoidBlock)(void);
- (void)performBlock:(VoidBlock)block;
- (void)performBlock:(VoidBlock)block afterDelay:(NSTimeInterval)delay;
- (void)performBlockOnMainThread:(VoidBlock)block;
- (void)performBlockOnMainThread:(VoidBlock)block afterDelay:(NSTimeInterval)delay;
- (void)performBlockInBackground:(VoidBlock)block;
@taka328w
taka328w / gist:2519425
Created April 28, 2012 14:24
バックグランド処理(Blocks)
#import "NSObject+Extensions.h"
- (void)doSomething {
[self performBlockInBackground:^{
NSLog(@"バックグラウンド処理でごにょごにょ");
}];
}
@taka328w
taka328w / NSObject+Extensions.m
Created April 28, 2012 14:18
NSObject+Extensions.m
#import "NSObject+Extensions.h"
@implementation NSObject (Extensions)
- (void)performBlockInBackground:(VoidBlock)block {
[self performSelectorInBackground:@selector(executeBlockInAutoReleasePool:) withObject:[block copy]];
}
- (void)executeBlockInAutoReleasePool:(VoidBlock)block {
@autoreleasepool {
@taka328w
taka328w / NSObject+Extensions.h
Created April 28, 2012 14:17
NSObject+Extensions.h
#import <Foundation/Foundation.h>
@interface NSObject (Extensions)
typedef void (^VoidBlock)(void);
- (void)performBlockInBackground:(VoidBlock)block;
@end
@taka328w
taka328w / gist:2519366
Created April 28, 2012 14:13
バックグランド処理(Blocksなし)
- (void)doSomething {
[self performSelectorInBackground:@selector(doSomethingInBackground) withObject:nil];
}
- (void)doSomethingInBackground {
NSLog(@"バックグラウンド処理でごにょごにょ");
}
@taka328w
taka328w / gist:2485391
Created April 25, 2012 01:44
【案】githubを使った開発
【参考】
http://d.hatena.ne.jp/hnw/20110528
【事前準備】
1. forkする
githubのページから
2. fork元の変更を取り込めるようにremote add
git remote add upstream git://github.com:328w/XXXX.git
@taka328w
taka328w / gist:2364411
Created April 12, 2012 03:11
【案】gitを使ったレビュー レビューをする人
1. review/NAME/BRANCH_NAMEをレビューして下さいと依頼を受ける
2. ローカルのブランチへ取得
git co -b review origin/review/NAME/BRANCH_NAME
3. 差分をチェック
(1) メールで指摘する
(2) 修正したよ!って言われた
git pull
@taka328w
taka328w / gist:2364403
Created April 12, 2012 03:10
【案】gitを使ったレビュー レビューを受ける人
1. 作業完了したブランチをレビュー用リモートブランチへ送る
git co BRANCH_NAME
git push origin BRANCH_NAME:review/NAME/BRANCH_NAME
※NAMEの部分はユーザ名
2. レビューしてねと伝える
review/NAME/BRANCH_NAMEをレビューして下さいと伝える
@taka328w
taka328w / gist:2357589
Created April 11, 2012 07:32
メモリ管理(Non ARC)
1. initXXXメソッドは呼び出し側がrelease/autoreleaseする
2. 1以外のメソッドはメソッド側でautoreleaseした変数を返す
=> frameworkもこの原則を守っている
3. retain/copyした変数は、retain/copyした側が責任を持ってreleaseする
4. NSMutableArrayなどにaddObjectした変数はaddObject後にrelease可能
=> autorelease済みならばreleaseしてはダメ