ページ

2010年3月21日日曜日

今週のCocoa情報(3/21) - 今週気になった Cocoaプログラミング情報の紹介

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

Should I always release self for failed init methods? - Stack Overflow

initメソッド内でエラーが起きた時の対処。self を release して nil を返すのが良いとのこと。



- (id)init{
   self = [super init];
   if(self) {
       // do some init stuff

       if (somethingFailed)
       {
          [self release]
          self = nil;
       }
   }

   return self;
}
Mac Dev Center にその解説がある。


Handling Initialization Failure

In general, if there is a problem during an initialization method, you should call [self release] and return nil.
There are two main consequences of this policy:


  • Any object (whether your own class, a subclass, or an external caller) that receives a nil from an initializer method should be able to deal with it. In the unlikely case where the caller has established any external references to the object before the call, this includes undoing any connections.


  • You must make sure that dealloc methods are safe in presence of partially-initialized objects.



Getting the time elapsed (Objective-c) - Stack Overflow

経過時間の計測



NSDate *start = [NSDate date];
// do stuff...
NSTimeInterval timeInterval = [start timeIntervalSinceNow];
シンプルでいい。

How To Chose The Best XML Parser for Your iPhone Project

iPhone情報だが、XML Parser の比較記事。NSXML, libxml2 をはじめ、TBXML, TouchXML, KissXML など多くのパーサーについての比較がある。XMLPerformance Test App なるものがあるのか。
グラフを見ると速度とメモリ利用率で TBXML というパーサーが良さそう。
最後に用途別にどのパーサーを選ぶと良いかが掲載されている。

read small XML documents => TouchXML, KissXML, GDataXML
read and write samll XML documets => KissXML, GDataXML
read extremely large XML documents => libxml2 SAX, TBXML, libxml DOM


QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。

円を描くアルゴリズムの解説あり。面白い。