前回の予告通り、今回からデザインパターンをObjective-Cで実装してみる。 取り上げるパターンの順番だが、テキストとして使用する「オブジェクト指向における再利用のためのデザインパターン」(以下GoF本)とは少し変更する。まず生成に関するパターンから始めるのは同じだが、その中のSingletonを最初に取り上げよう。 Singletonとは Singletonは、インスタンスを1つしか生成しないクラスのためのデザインパターンだ。主な用途としては、ファイルマネージャや、ウィンドウマネージャなど、対象がただ1つしかないものが挙げられる。 Singletonクラスのインスタンスを取得する場合、通常のalloc、initといったメソッド(C++でのnewに相当)は、使わない。その代わりに、インスタンス取得のためのメソッドを提供することになる。作成された、ただ一つのインスタンスは、Singlet
Singletonパターンの話を続けよう。前回の最後で、Cocoaフレームワークに見られるSingletonの話をすると書いたが、前回の記事について読者から指摘をもらったり、書き漏らしたトピックがあったので、もう一回Singletonの実装の話をすることにする。 スレッドの排他制御 まずは、Singletonのインスタンスを取得するメソッドを、複数スレッドから呼ばれたときに排他制御することについて。 前回、「Objective-Cではスレッド同期のための文法は提供されていない」と書いてしまったが、これは誤りだ。昔のObjective-Cにはなかったが、現在では@synchronizedというキーワードが追加されている。これを使うと、ランタイムレベルでの排他制御を行うことができる。GCC 3.3以降、Mac OS Xだと10.3以降から使用可能だ。 この文法に関する詳しい説明は、「Objec
iOS 5が公開されて、Dev CenterもWe’ll be back soon になっています。 iOS5 NDA will be gone soon! 記念に、iOS 5 のプログラム面での変化、ARCを使った簡単なサンプルをGitHubに登録しましたのでご覧下さい。 追記:うーねこ? (@ne_ko_)さんからの指摘であった、”クラス変数”という間違えた記述を、”インスタンス変数”という正しい記述に変更しました。 tomohisa/EasyBlockCallback – GitHub ARC は、メモリ管理でこれまで手動で行っていた、 Retain Release Autorelease を自動でコンパイラで行うようにさせる方式です。一定のルールに従う必要がありますが、メモリ管理に関する、Retain、Releaseを書かなくてよくなります。このサンプルには、ARCを使っているプロ
XcodeのObjective-C関連のWarning、errorについてまとめました。 自力解釈したものもありますが、参考にしたサイトもあります。 warning:‘X‘ may not respond to ‘Y‘ クラスXはメソッドYを呼べないかもしれません(そんなメソッドあったかなぁ) ヘッダファイル(class.h)内のクラス宣言の中にそのメソッド名がない(呼び出す前に宣言されていない)か、メソッド名間違いの可能性あり。 メソッド名定義例 -(void) popUpReadMe; warning:unused variable ‘X‘ 変数Xは使われていません(そんな変数名知らないけど) 宣言されている変数が使用されていない。変数名間違いの可能性もあり warning:local declaration of ‘X‘ hides instance variable ローカル
データ件数は、Customerが 500件、Karteが6,000件(Customer1件につきKarte 12件)となっていて、それぞれを1つの CSVファイルへ書き出す。 処理は次のような感じになる。 NSMangedObjectContext* moc = [取得]; NSArray* customers = [moc Customer全件取得]; for (NSManagedObject* customer in customers) { NSArray* kartes = [moc Karte取得・条件:customer]; for (NSManagedObject* karte in kartes) { [CSV1行書き出し]; } }メモリのフットプリント(利用状況)はこんな感じ。 Customer, Karte を1件づつ読み込む度にメモリが消費され、フットプリントが増大し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く