アプリを作るのは、思ったよりはるかに苦労しました。いろいろと教訓を得たので、忘れないうちにメモしておきます。機会があればLTしますんでアドバイス下さい。
- アプリ申請関連
- 漢字は、文字化けして登録が遅れたりするので使わない。
- はまったところ
- URLや文字列は直接比較するとポインタを比較してしまうので、文字列比較メソッドなどを使って比較する。
- 文字列の結合はstringWithFormatで一気につなげようとすると、うまくいかないことがある。地道にApendingでつなげるのが確実。
- 文字列の結合の引数にnilが入るとアプリが落ちることがある。引数が空でないかチェックするコードが必要。
- ミス予防
- メソッド名は重要。WithWebview:のように引数の型がわかるようにしておいた方が良い
- NSUserDefaultsのPrefKeyはタイプミスを避けるために定数にする。
- メソッドの引数の型をちゃんと指定(idではなくNSString*など)すればミスを予防できる
- その他
- 処理ごとに細かくNSLogで出力する。コーディング中は不要でもデバッグに必要。どうせ書くなら最初から書いた方が良い。
- デリゲートプロトコルの引数の変数名は自由に変えることができる。他の名前とかぶったときは変えてしまえば良い。
- 積極的にメソッドを作ったほうがObjective-Cの命名規則に慣れることができそう
- 要調査
- 複数ファイル間で定数を使う方法については要調査。
- 定期的に処理を実行する方法、要調査。てか、ViewControllerのインスタンスを生成しているのはどこなんだろう・・・
- 新しいインスタンス変数を作るのにいちいち定義ファイルを呼び出すのは面倒。何かいい方法がありそう。要調査。
- 実装ファイルにはあるけど定義ファイルにないメソッドも問題なく動いている。要調査。
- インターフェース関連
- ストーリーボードのViewControllerにファイルを割り当てるときはアイデンティティペインで指定する。Viewは増えるのでMainViewController, SettingsViewControllerのようにわかりやすい名前を付けておいた方が良い。
- UIパーツ
- UILabelは行数を指定できる。テキストエリアより便利。
- UISwitchは置いただけでタッチすると動くし、内部のプロパティも変化する。新たな部品を使うときは、まず何もコードを書かずに置いてみて観察するのが良い。
- UIAlertViewを表示してすぐ消すにはperformSelector: withObject: afterDelay:を使う。
- パスワードの表示などでテキストフィールドの文字を読めなくするにはtextfiled.secureTextEntry = YES;
- テキストフィールドに入力された値を読みとるにはtextFieldDidEndEditingが便利。
- 要調査
- アプリがバックグラウンドから復帰したときに自動的にログイン処理をしたかったが、やり方がわからなかった。要調査。
- セグエで遷移するとViewDidLoadが呼ばれる。状態を保存しておく方法は要調査。
- その他
- Webサービスのログイン情報のところにログインできたかわかるようにしないと、ログイン情報が間違っているのか、それとも他に原因があるのかがわからない。やり方、要調査。
- ボタンの画像はあらかじめ探しておく。できれば高解像度のもの。
- その他
- プログラムを作っている途中でOSやXcodeのバージョンアップはしない方が良い。
- <JaveScript>HTMLのフォームのSubmitボタンがないときは、送信ボタンの名前を使ってDocument.FormName.ButtonName.Click();とする。
- プログラミング一般関係
- 見通しの良いコード
- プログラミングを始める前に設計を文章化しておいた方が良い。場当たり的にプログラミングするとコードの見通しがすぐに悪くなり気分が悪い。
- 時間管理
- テストは時間がかかり、予期せぬ仕様変更も起きる。最後にちょっとだけするのではなく、長めに時間をとっておくこと。最後には家族にしわ寄せが行くことになる。
- バグ取りもキリがない。期限を設けるべき。
- コーディングルール
- ハンガリアン記法を貫徹するのか決めておいたほうが良さそう。
まあでも無事提出できてよかったです。不具合が出るたびにどうなることかとヒヤヒヤしました。いやー、疲れたわい。