2011年6月22日水曜日

クラスを分割する。

プログラムの機能を増やして行くと、1つのオブジェクト内のコードが膨大となってしまい、メンテナンスがしずらくなります。この解決のためには、やはりオブジェクトとして意味のある単位で分割してまとめるが王道です。

小さく切出す場合は、UIViewの派生オブジェクトとして作るか、ビューコントローラの一部を切出してコントロールするかになるかと思います。しかしながら後者についてはAppleとして推奨しないようです。

実装する際は、これまでグローバル変数などで管理していた状態等を隠蔽しながら実装します。
そのため、状態遷移のためのメソッドを切出したオブジェクトに実装します。
また、呼び出しもとのオブジェクトの状態を確認するためには、プロパティとして状態変数を表に出します。

その結果、ヘッダファイルとしては以下のようなものとなります。


@interface decimalMode : UIView {
NSString *now;
}
// 状態をプロパティ化し、読み出し可能とする ex decimalMode.now
@property (nonatomic, retain) NSString *now;
// 状態を変化させる操作をインスタンス化する。インスタンスの名称には操作の意味を持たせる。
-(void) zero ;
-(void) add2 ;
-(void) two ;
-(void) flowting ;

-(IBAction) decimalPointButtonPressed:(id)sender;
@end

2011年6月16日木曜日

Xcode4でアプリを作る

・ソースコントロール
Window - organizer
左下のタブからAdd
リポジトリを外部のオープンソースから実装できる。<GitHub>


・ソースコードエディタ
 ナビゲーション、エディット、テスト
 右上の左から2番目のボタンでセカンドエディタを開くことができる(*.h、*.m)<Open Counter Part>
    *.mibファイルでは、左にインターフェース、右にソースコードを開くことができる。
 オプションキーを押してクリックすればセカンダリエディタに表示できる。
 ーを入れてCTRL+SPaceでメソッドの候補を出してくれる(Code snippets)。
 右下にある{ }はドラック&ドロップでソースの断片を格納、取り出しでき、繰り返しの入力をサポートしてくれる。
 入力中のバックグラウンドでエラー判定してくれる。黄色いバルーンをクリックしFIXボタンを押すと自動訂正する。

・検索と置換
   サーチナビゲータは、ある範囲での全てのコードを検索してくれる(左上の丸いアイコン)
 正規表現で検索することができる。
 置換はプレビューし、対象を選んでからリプレースすることができる。

・バージョンエディタ(右上、左から三番目)
 ログモード、ブレームモード(誰が)、コンパリジョンモード
 右下のジャンプバーで任意のバージョンに飛ぶことができる。
 真ん中の下のボタンで、タイムライン表示ができる。

2011年6月14日火曜日

Xcode 4の新概念

WWDC 2010のXcode4解説ビデオがiTunesUから既に無くなっている。
ダウンロードしておいてよかった。

ー ワークスペース ー
WorkSpaceというのがあるらしい。
プロジェクトも入ってない空の箱らしい。
Files- AddFilesでプロジェクトを読み込むことができる。ドキュメントも左のタブに読み込むことができる。また、スキームという概念のものも組み込むこおができる。Launch Schemes, Distribution Schemesといったものだ。
よくわからない。

プロジェクトはWorkSpace間でシェアすることができる。スキームマネージャで共有を選ぶらしい。

プロジェクトの中のファイルを編集するのはあまり変わらない。

ー ナビゲータ ー
ナビゲータとういうのが左の選択ボタンにある。クラス分類、サーチ、ブレークポイント、ログなどがある。
下にはフィルタリングのウィンドウがある。

ー エディター ー
スタンダード、アシスタント、バージョンエディタの3つがある。

ファイルとしては、ソース、インターフェースビルダ、データモデル、HEx, Previewがある。
ジャンプバー、アシスタントエディタ、インスペクター、ライブラリがある。

*.h と *.m を左右にならべ、ドラック&ドロップでインスタンスをコピーできる。

.nibファイルを選択すると、左にビルダー、右にソースなどで編集可能となる。
この際、ボタンとコードの間でドラックすると、アクションが実装できたりする。

範囲選択して、コードライブラリにドラックすると、そのコードが自動でカスタムコードとしてライブラリに格納される。ショートカットも登録できる。
すげー。

データモデルは、エンティ、アトリビュートを登録でき・・よくわからん。
まだ、つかったことないからな・・

ファイルは任意にHexエディットができる。

選択した型などは、左に説明がでてくれる。

ー オーガナイザー ー
Window - Organizerで起動する。
ドキュメントタブを選択すると、クラスリファレンスを見ることができる。
iPhoneタブでは、・・・
リポジトリタブでは、・・・
プロジェクトタブでは・・・
アーカイブタブでは・・・

ー バージョンエディタ ー
右の左から2?3?番目はバージョンエディタといい、だれがいつ変更したか記録を見ることができる。
異なるバージョンを左右で比較してみることができる。まんなかの黒いものが日付などのバージョンで選択して比較することができる。

ー デバッキング ー
あまり変わらない。
ブレークポイントでとまると、コンソールが自動で表示される。
エラーは真ん中の上にでて、クリックすると左のタブとコードに飛ぶことができる。

ー スキーム ー (新コンセプト)
ビルド/オブジェクトの生成を計画することができる。チーム作業に使うらしい。

ビルドフェーズ ー ターゲットの生成
テストフェーズ ー ユニットテスト、性能テスト・・
ラウンチフェーズ ー 

しかし、今つかっていない機能はやっぱりよくわからないなぁ・・

Xcode 4 を使い始めないと

そろそろXcode4を使い始めないとやばい
日本語でもいくつか参考書がではじめたらしいが、やはり高いなぁ・・

  

2011年6月11日土曜日

iOS5でのロック画面から直接カメラへ行く方法

iOS5は、ロック画面からカメラアプに直接移動できたり、ロック画面から音楽をコントロールできるはずですが、始めその方法が判りませんでした。

方法としては、簡単で
・ロック画面が表示されている状態で、ホームボタンを「ダブルクリックする」です。

気がつかなかったなぁ

2011年3月27日日曜日

Mac開発環境のアンインストール方法

sudo Developer/Library/uninstall-devtools --mode=all

2011年3月6日日曜日

メモリ不足への対処

組み込み型OSであるiOSの実装にあたり、メモリ管理を確実に行うことは可用性を保つ上で重要だ。”UIKit詳細リファレンス”に良い解説があった。メモリ不足対処には、didReceiveMemoryWarningが呼ばれることは周知だが、OS3.0からはviewDidUnloadが呼ばれるため、ここにコードすることになる。didRecieveMemoryWarningは、メモリ不足時に常に呼ばれるが、viewDidUnloadは前面にいるビューコントローラ以外のコントローラで呼ばれるようだ。そもそも画面遷移のときにはオブジェクトを解放してあげるのはマナーであるが、viewDidUnloadにもコードし、解放してあげることも必要となるようだ。