GDC の dispatch_release() を ARC 対応する方法

久々に ARC を適用していない iOS アプリ開発に携わっていたのだが,ようやくそのアプリも ARC 対応することになり,[… release]; とか [… retain]; とか [super dealloc]; とか消したりして対応していたのだが,どうしても警告がとれない箇所があったので,解決方法をメモ.

1
2
3
4
5
6
- (void)dealloc
{
#if !OS_OBJECT_USE_OBJC
    dispatch_release(self.semaphore);
#endif
}

参照:iOS6(ARC)でのGCDのメモリ管理

ファイルからテキストデータを読み込み NSData に変換する方法

開発を行っていてサーバAPI の開発が遅れているときなど,クライアント側のテストができない場合に
ちょっとしたデータを作成し,アプリに読み込ませたいときがあります.

そんな時は,デスクトップにデータファイルを作って,以下のコードでアプリに読み込ませると便利です.
なんてことは無いコードですが,毎回ググるのが面倒なので,メモです.

1
2
3
4
5
6
7
8
// シミュレータの場合
NSString *path = @"/Users/xxxxx/Desktop/xxxxx.xml";
// 実機の場合は,テストデータをリソースに含めておいて,以下のコードで取得する.
NSString *path = [[NSBundle mainBundle] pathForResource:@"holiday" ofType:@"xml"];
 
NSError *error = nil;
NSString *fileData = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
NSData *xmlData = [fileData dataUsingEncoding:NSUTF8StringEncoding];