- 2008-12-11 (木) 18:00
- iPhone SDK / Cocoa / Objective-C
1. 可変個の引数を受けるメソッドの最後に nil を渡していない
NSArray *array = [NSArray arrayWithObjects:obj1 ,obj2 ,obj3];
2. (主にイニシャライザの中で)メンバ変数を retain していない
autorelease済みのインスタンスを返すイニシャライザを使ったときに、ついついretainを忘れてしまいます。そのメンバ変数にメッセージを送ろうとした瞬間クラッシュします。
3. retain, copy, assign を意識していない
例)NSMutableDictionaryのキーとしてCopyできないオブジェクトをセットしようとする(ちなみにこの場合は代わりに CFMutableDictionary を使うのがてっとり早いです)。
4. フォーマット指定子の動作を理解していない
NSLog(@"%d", 1.0);
で「0」が出力されるのが原因で小一時間悩んだ記憶があります。PHPなんかでは float(っぽい変数) を %d で出力すると、int にキャストされた値が出力されるので…。
5. NSSet の anyObject がランダムな要素を返すと勘違いする
「もっとも返しやすい要素」を返すだけで決してランダムではありません。
6. NSMutableArray, NSMutableSet, NSMutableDictionaryの初期化を忘れ、オブジェクトを add できない
この状態を、「nilに腕押し」と名付けました。
7. NSMutableDictionary の setObject:forKey: と setValue:forKey: を混同する
setValue:forKey:の方はキー値コーディング用のメソッドですね。詳細はリファレンスをご確認ください。
8. UIKit Additions なメソッドを見落とす
NSIndexPathクラスのsectionプロパティ、rowプロパティの存在に最近気付きました。
9. (引数が一つのメソッドについて)セレクタの最後の:(コロン)をつけ忘れる
doSomethingWithParameter:(int)param なのに、@selector(doSomethingWithParameter) としてしまい、そんなメソッドはないと怒られます。
10. 互いにimportしあうヘッダファイルができて悩む
@class を使って回避します(そもそも設計が間違っているという気もします)。
11. 必要なフレームワークが見つからない
CoCoa Touch、Media レイヤーのフレームワークはデフォルトで開いているフォルダにはないので。
12. 実機にインストールできない
iPhone SDK が2.2になって大分簡単になりましたが、証明書のインストールあたりの手順を飛ばしてしまってハマるのがありがちかと思います。
関連する投稿
- Newer: App Store の審査基準緩和の噂
- Older: App StoreはスクレイピングNG
Comments:1
- Toru 09-01-03 (土) 1:05
-
ちょこちょこ思い当たる事がw
特に1、9は私も小一時間悩みました。。12、JBしていたころと比べると、リリース最初の導入もまだ、、楽な方でしたが、
今の2.2はほんとに赤子の手をひねるよう。。。や、楽になったもんです。
Trackbacks:1
- Trackback URL for this entry
- http://iphone-dev.ensites.net/archives/359/trackback
- Listed below are links to weblogs that reference
- iPhoneアプリ開発を始めた頃にハマりがちな様々なポイント from iPhoneアプリ開発ブログ
- pingback from links for 2008-12-11 « 個人的な雑記 08-12-12 (金) 7:01
-
[...] iPhoneアプリ開発を始めた頃にハマりがちな様々なポイント | iPhoneアプリ開発ブログ (tags: iphone dev) [...]