Xcode 4 より Interface Builder のパーツに Gesture Recognizer が追加された。これを使うと今までコーディングしていた Gesture の登録コードを GUIで設定することができる。 Creating Gesture Recogniz...
この記事はiOS Advent Calendar 2011の7日目の記事になります。ということでもうすぐクリスマスですね。クリスマスプレゼントの準備はお済みですか?まだの方はちょっとオシャレに、今年のプレゼントをCocoaPodsでご用意してみてはいかがでしょうか? ■ご存じ、ないのですか!? さて念のためCocoaPodsについておさらい。要するにiOS/OS X用のmavenです。以上。細かい点については以下の記事が詳しいのでそちらをご参照ください。っていうかMac Dev JP Advent Calendarとネタがもろかぶりhttp://iphone-dev.g.hatena.ne.jp/laiso/20111117/1321437909 http://d.hatena.ne.jp/Watson/20111204/mac_dev_jp_advent_calendar_cocoapo
どうも、「iOS Advent Calendar 2011」5日目担当のfaultierです。つい最近使ったのでNSURLProtocolネタで。 NSURLProtocolって何? Foundationフレームワークで最初から扱えるプロトコルはhttp、https、ftp、fileの4つ。これ以外のプロトコルでの通信をNSURLConnectionやNSURLDownloadなどで扱う場合や、特定のリクエストに限って特別な処理をしたい場合などに、NSURLProtocolを継承して登録することで使えるようになる。ちなみに、他のアプリからopenURLしたときにアプリを起動させるカスタムURLスキームとはまた別なので注意。こちらはアプリ内でURL Loading Systemを使うときにだけ影響するもの。 使い方 最低限必要なのは、+canInitWithRequest:、+canonic
iOS Advent Calendar 2011 3日目です。 今日は iOS5 から新しく仲間になった中でも影が薄い子 NSOrderedSet を紹介します。 そもそも NSArray は使うけど NSSet は馴染みが薄いという人も多いと思いますので、まずは NSSet の復習から入ります。 NSSetと集合 NSSet は NSArray や NSDictionary と同じコレクションクラスで集合を扱うためのクラスです。 UNION(和集合), INTERSECT(積集合), EXCEPT(差集合) などの集合計算が得意で、ある集合に任意の要素がマッチするかどうかという判定が多い場面では有効なクラスです。 和集合:いくつかの集合に含まれている要素を全て集める NSArray *worldA = [NSArray arrayWithObjects:@"Kyoma", @"Kuri
これまでの記事はこちら: [iOS5] ARC (Automatic Reference Counting) : Overview [iOS5] ARC : プロパティ属性と使い方 [iOS5] ARC : Outletにはweakプロパティを使おう 循環参照とは 今回は、強参照(Strong reference)を使うときに注意したい循環参照(Strong reference cycle)についてです。循環参照とは、その名の通り、2つ以上のオブジェクトが強参照し合うことにより、どちらのオブジェクトも破棄できない状態を言います。 ここで、循環参照が発生するのは、お互いに”強参照“しているときです。複数のオブジェクトが親子関係を持つ場合を考えてみます。 アドレス帳オブジェクトAddrBookと、そのエントリーEntryがあるとします。AddrBookはEntryオブジェクトのentryを、E
[iOS5] ARC (Automatic Reference Counting) : Overview 2011/11/16/|iOS|メモリ管理, iOS5, ARC iOS 5では数々の機能が追加されましたが、その中でも開発者の私たちにとって嬉しかったのはARC(Automatic Reference Counting)ではないでしょうか。そこで、ARCの概要から注意点まで、基本的なところを何回かに分けてまとめていきたいと思います。 ARCとは? ARC (Automatic Reference Counting) とは、その名の通り、自動リファレンスカウンタ。リファレンスカウンタ方式のメモリ管理を自動で(正確にはコンパイラが)行ってくれるというものです。 ご存知リファレンスカウンタ方式のメモリ管理では、retain, releaseなどのメソッドを用いて生成したオブジェクトの保持状
iOS/iPhone/iPad/MacOSX プログラミング, Objective-C, Cocoaなど ISO 8601日付文字列を NSDateに変換する 例えば 2010-12-01T21:35:43+0900という文字列があった場合 NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; NSDate* date = [formatter dateFromString:string]; [formatter release];で NSDate へ変換できる。 ISO 8601 には多くのバリエーションがあって上記書式は Facebook API などで使われている ISO 8601 書式の一つ。 参考:ISO 8
記念すべき記事IDが777のポストだ。 何が出来るの? ピンチイン・アウトによる画象の拡大・縮小。ドラッグによる移動ができます。 注記 QuartzCore.frameworkを追加しないと動きません。 実際のソース UIImageResizeView.h #import <Foundation/Foundation.h> @interface UIImageResizeView : UIView { UIImage *image_; CALayer *imageLayer_; CGFloat lastScale_; CGPoint firstPosition_; } @property (nonatomic, retain) UIImage *image; @end UIImageResizeView.m #import "UIImageResizeView.h" #import <Qu
他アプリケーションが格納した Keychain Services 内の情報へのアクセス Mac OS X の場合はユーザが許可を与えれば他のアプリケーションの情報へアクセスすることができる。一方、iOS の場合、アプリケーションは自身が保存した情報のみアクセスが行える。他のアプリケーションの情報へは基本的にアクセスすることができない。ただし同じプロビジョニングプロファイルを使ってビルドされたアプリは設定により情報を共有することができる(後述)。 iOS での特記事項 iOS には単一のキーチェーンのみ存在する(Mac OS X は複数)。 iOS の場合、PC接続時にストレージの内容は暗号化されたままバックアップされる。これを復号化するパスワード(keychain password)はバックアップされない(iOSデバイスの中から外に持ち出されない)。 Keychain Service はプ
前の記事で予告した通り、今度はNSRegularExpressionの話。 正規表現でマッチした部分文字列を取得する まずNSRegularExpressionオブジェクトを作って、それのメソッドにNSStringのオブジェクトを渡す、という形で使う。まぁ説明するよりコード見た方が早い。 NSString *string = @"「そんな正規表現で大丈夫か?」「大丈夫だ、問題ない」"; NSError *error = nil; NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"「そんな(.+)で大丈夫か?」「(.+)」" options:0 error:&error]; if (error != nil) { NSLog(@"%@", error); } else { NST
ちょっと前に書こうと思ってて忘れてたネタ。iOSアプリ内で正規表現を使ってごにょごにょしようと思ったらRegexKitLiteを導入するのが一番てっとりばやいのだけど、iOS 3.2以降はFoundation Framework内でも地味に正規表現が使えるようになってきてるのでメモがてら記事にしておく。 NSRegularExpressionSearch Cocoaで文字列中に別な文字列が含まれているかどうかを知りたいときは、NSStringの-rangeOfString:というメソッドを使う。RubyのString#indexみたいな感じで、見付かった文字列がどこにあるかの位置を返してくれる。こんな感じ。 NSString *string = @"I love Udon."; NSRange match = [string rangeOfString:@"Udon"]; if (matc
データベースを用いたアプリ一般に関していろいろと勉強しようと思い、"Professional iPhone and iPad Database Application Programming"という本を読み始めた。この本なかなかよい。データドリブンのアプリケーションを設計する際のポイントが結構幅広く書かれている。本の紹介は別途することにして、今回はTableViewのパフォーマンスを「簡単に」改善できるかもしれない方法をご紹介。 透過性のビューを極力使わない UITableViewCellにはデフォルトで4種類のスタイルが用意されているが、これでは不十分な場合、自分でセルをカスタマイズすることになる。 その方法はいろいろあるが、中でも簡単なのはセルのcontentViewに別のビューをペタペタと貼付けていく方法だ。サブビューの作成と追加はTableViewDataSourceのメソッドta
UIImage を高速で描画する必要がある案件に遭遇したため、 CALayer を使ってみました。 CALayer と聞くとなにやら難しい感じがしますが、実際に使ってみると非常に簡単で高速です。 CALayer を使うと良い場面は以下のような場合です。 画像を大量に描画する必要がある 画像を高速に描画する必要がある 画像を高速に変形・移動する必要がある CGContextDrawImage を今使っている箇所がある とくに変形に対して非常に強いです。 CGContextDrawImage で変形後の UIImage を再度描画し直したりするのに比べると、 CALayer の変形は格段に高速に動作します。 ■実際に描画してみる まず最初に <QuartsCore/QuartsCore.h> をインポートします。 QuartzCore.framework をプロジェクトに追加するのも忘れないよ
iOS/iPhone/iPad/MacOSX プログラミング, Objective-C, Cocoaなど メニューは UIMenuController を使ってカスタマイズする。 UIMenuController Class Reference 使い方は次の通り。 1. setTargetRect:inView: でメニュー出現の位置を決める 2. 表示するメニューを配列にして menuItemsに格納する 3. setMenuVisible:animated: で表示する 4. canPerformAction:withSender: をオーバーライドして表示したいセレクタを選別する 表示内容は menuItemsプロパティに設定する。これは UIMenuItem の配列を指定する。 UIMenuItem Class Reference 使い方については下記サイトがわかりやすくて参考にな
データ件数は、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件づつ読み込む度にメモリが消費され、フットプリントが増大し
NSUserDefaultsにはアプリケーション出荷時設定を登録することができる。 -アプリケーション出荷時設定 -[NSUserDefaults registerDefaults:] を使う。 User Defaults Programming Topics: Using NSUserDefaults より引用 + (void)initialize{ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"YES" forKey:@"DeleteBackup"]; [defaults registerDefaults:appDefaults]; } アプリケーションで NSUserDe
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く