プログラミング (iOS, JavaScript, Jenkins, Sikuli) とMacやiPhoneなどの話題が中心のブログ Xcodeプラグイン Xcodeのプラグインや色テーマなどを管理をするプラグインAlcatrazを試す Xcodeでの補完をより便利にするFuzzy Autocomplete for Xcodeを試す XcodeでメソッドのJavadocコメント追加を瞬時に行えるようにするプラグインVVDocumenter-Xcodeを試す ソースコードを整形するXcodeプラグインClangFormat-Xcodeを試す コード補完プラグインFuzzy Autocomplete for Xcodeが2.0になってより便利になりました Clang-KeyPathValidatorでKVCのパスをXcodeでチェックできるようにする チュートリアル iPhoneでのサンプルア
プログラミング (iOS, JavaScript, Jenkins, Sikuli) とMacやiPhoneなどの話題が中心のブログ Objective-Cでは、定義していないメッセージをオブジェクトへ送信すると、通常は未定義なセレクタとして例外NSInvalidArgumentExceptionが発生します。しかし、クラスにメソッドforwardInvocation:を定義しておくと、エラー報告前にこのメソッドが呼ばれるようになります。そのため、メソッドforwardInvocation:の実装次第で、メッセージがなかったときのデフォルトの挙動を定義したり、エラー回避などを行えるようになります。 この記事では、forwardInvocation:を利用したメッセージ転送や多重継承について述べます。なお、詳細については、Appleの「Objective-C Runtime Programm
Apple iPhone 3GとiPhone SDKを使ってアプリケーションをデバッグするための情報。 デバッグとは 言わずもがな、不覚にもアプリケーションが正しく動かなかった場合に原因を突き止めて修正する作業のことです。 NSLogの利用 NSLogを利用してタイムスタンプや変数の内容等をデバッグウィンドウに表示することで、原因を特定できることが多々あります。例えばNilであるはずがないオブジェクトが存在していることを突き止めれば、これをインスタンス化したり代入している箇所に問題があると言えます。 ただ、NSLogをDevice用のアプリケーションに入れておくとログが物理的に生成されてしまうため、スイッチを付けて判定させると便利です。 #if kShouldPrintLog NSLog(@"*** init_bydate_statement defined"); #endif こんな感じ
iPhone アプリの開発には、コンパイラとして gcc 以外を使うことは基本的にありません。 したがって、gcc に実装されている C99 仕様や gcc 拡張仕様を気がねすることなく利用することができます。 ここでは、便利な C99 仕様や gcc 拡張を紹介します。 配列の動的確保 (C99) 配列を定義するときに、動的にサイズを指定してメモリを確保することができます。 従来は、 int n = 100; char* buf = alloca(n); のように alloca を使っていたところを、 int n = 100; char buf[n]; と、言語仕様の範囲内で、より直観的に書けるようになりました。 case の範囲指定 (gcc 拡張) 従来、switch 〜 case で switch (n) { case 0: case 1: case 2: case 3: proc
参考サイト iPhone Tutorial - Archivers, unarchivers, and serialization on Vimeo Cocoaフレームワークには、もともとオブジェクトをシリアライズするための仕組みが用意されているので簡単です。 NSCodingプロトコルで定義されているメソッドを実装すれば、オブジェクトがシリアライズ可能になります。 例えば、下のような設定画面の値を保存するときに便利です。 設定の保存にはもうひとつ、NSUserDefaultsを使う方法もあります。 しかし、設定画面がiPhoneの「設定」のところになってしまい、設定項目に気づかないことがあったり、設定を変更するためにはアプリケーションを終了しなければならないなど、不便なので私は使いません。 手順 シリアライズされるクラスにNSCodingプロトコルのメソッドを実装する。 NSKeyedA
みなさん、楽しく開発してますかぁ〜! この連続投稿企画もついに20回を超えました!! なんとか、こうしてココまでやって来れたのも いつも見てくれているみなさんのおかげです! なかなか、コメントを頂けなくてもPVをみればどれだけの人に見て頂けているのかは何となく分かるので、本当にありがたい限りです<(_ _)> ホントにありがとでっす★ 注意:投稿者自身もCoraDataについて勉強中のため、このシリーズには誤りが含まれている可能性があります。もし、間違いに気付かれた方はコメント欄もしくはtwitterなどでご指摘いただけると幸いです<(_ _)> また、開発環境はXcode3.2.3 iPhone SDK 4です。実機でのテストなどは自己責任でお願いいたします。 前回でこのシリーズの最大のヤマ場は超えた感じですので、あとは完成に向けて邁進していくとしましょうか。 (ただし、今回はCoreD
NSStringとは NSStringは文字列を格納するオブジェクトです。iPhone内部やインターネット上のファイルの場所を格納するのにも使われ、 その場合に便利なさまざまメソッドが用意されています。C言語などでは文字列は単に""の間に入れるだけですが、 Objective-Cの場合は@""と、頭の部分に@が付きます。 代表的なメソッド(目的別) 文字列からNSStringオブジェクトを作りたい - initWithString: 変数を組み込んだ文字列からNSStringオブジェクトを作りたい - initWithFormat: NSStringオブジェクトの内容をファイルに保存したい - writeToFile:atomically:encoding:error: インターネット上のファイルからNSStringオブジェクトを作りたい - initWithContentsOfURL:e
//乱数シード + (void)srand { srand(time(0)); } //乱数の取得 + (int)rand:(int)num { return abs(arc4random())%num; } //現在時刻の取得 + (double)currentTimeMillis { return (double)[[NSDate date] timeIntervalSince1970]; } //年月日の取得(cal.year/month/day/hour/minute) + (NSDateComponents*)calendar { NSDate *date=[[[NSDate alloc] init] autorelease]; NSCalendar *gregorian=[[[NSCalendar alloc] initWithCalendarIdentifier:NSGreg
CoreData を使うアプリであればこの程度の件数はすぐに行くので、起動時にマイグレーションが走ると確実に落ちてしまう。これを防ぐためには起動時に CoreData へアクセスさせないのが最低限の対策になるが、その場合でもユーザが CoreData へアクセスする操作を行った瞬間にマイグレーション処理に時間がかかって画面が固まったようになるのでユーザビリティは良くない。 マイグレーションを考慮したパターン よって CoreDataを使うアプリではマイグレーション用の画面を用意するのがベスト。処理フローはこんな感じ。 起動 ↓ (1)マイグレーションチェック もし必要なら、マイグレーション用の画面へ遷移し、(2)マイグレーション実行 ↓ 通常画面マイグレーションチェックは NSPersistentCoordinator を使えばわかる。 Cocoaの日々: [iOS][Mac] CoreD
iOS でデータを永続化する方法の続きです。今回は Core Data を使ったデータの永続化方法について説明します。 本記事では複雑で習得が難しいとされている Core Data について概念編と実装編の2回に分けて説明していきます。記事の全体的な流れとしては Core Data がどういったフレームワークかというところから O/R マッピングの説明、Core Data を使うメリット、Core Data フレームワークの概要、Core Data を使ったプログラムの例まで説明します。次の記事で実際に動くサンプルを作成します。 Core Data って何? Core Data はモデルオブジェクトを永続化するためのフレームワークです。もとは Mac OS X のために開発されたフレームワークで、iOS 3.0 から使用できるようになりました。 Core Data はデータの永続化に SQ
この記事は情報が古い可能性があります。参照する際にはご注意ください。 Core Data のパフォーマンスを良くするためのテクニックはいくつか存在するが、その中でも重要だと思われるバイナリデータの扱いについて記載されている書籍を見つけたので参考までにまとめておく。 Core Data: Apple’s API for Persisting Data on Mac OS X (リンク Amazon) の6章に分かりやすい解説があった。ただし、この本は主にOSX用に書かれたものなので、目安となるバイト数はiPhoneOSでは少し変わってくるかもしれない。それでも三通りの方法を使い分ける … この記事は情報が古い可能性があります。参照する際にはご注意ください。 Core Dataのデータをフェッチするとき、特定の条件を指定したければNSPredicateを使う。NSPredicateは、Core
CocoaでiPhoneアプリやMacアプリ開発をしている方なら一度は耳にする単語であるCoreData。これは主にSQLiteをラップし、データとビューのつなぎ合わせを簡潔にすることを目的としたフレームワークライブラリです。(MVCでいうところのModelに当たる)。加えて、Xcodeにおいて標準でCoreDataのエンティティ(テーブル)の作成やリレーションシップの作成をGUI上で行えるようになっているため、一見すると使いやすい印象を受けます。 ところが、現実的にこのライブラリをiPhoneアプリ開発で利用する方はあまり多くないようです。何故利用されないのかといえば、CoreDataにRDBと同じ機能を求めて利用しようとする方が多いからだと考えられます。CoreDataは前述のとおり、MVCでいうところのModelに当たる機能を担うため、ビューやコントローラとも密接に関係するように作ら
え〜と、かなりブログの更新を怠けている真っ最中ですが^^; 突然ですが、ほぼ初となる『iPhone/iPadアプリ開発者向け』のエントリを本日から始めます。 題材は『CoreData』ですっ! なぜ、急にこのエントリをする事にしたか?と言うと、 ・まだまだ、CoreDataに関する日本語の情報が少ない気がする。 ・あってもMac向けにInterfaceBuilderでの作業ですむようなやり方だったりして、iPhone向けに応用するのが難しい。 ・書籍やWebで紹介されているチュートリアルの範囲内では、構造が単純すぎて実際にアプリで使えるレベルの使い方が分からない。(or 難しすぎてわからない) ・今開発中の”TapDays”には『ゼッタイ不可欠!!』だから。 などなど…。 色々調べていくと洋書で習得されている日本の開発者の方も多いようですが、僕には…(>~<;) それと、CoraDataに
- Hiroyuki Fujikawa introduced storyboards in iOS development at WWDC 2011. Storyboards allow visually designing app interfaces and transition behavior. - Key storyboard elements include view controllers, table views, prototype cells, segues, and relationships between screens. Storyboards support both static and dynamic table cell content. - Storyboards improve workflow by streamlining view contro
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く