タグ

ブックマーク / kazzz.hatenablog.com (10)

  • FMDBExtensionsを公開しました - Kazzz's diary

    Kazzz/FMDBExtensions · GitHub FMDBExtensionsはiOSのSQLite用ライブラリィであるFMDBandroidSQLiteDatabaseクラスにインスパイアされて書いた、iOSのSQLiteデータベース用ライブラリィです。 経緯 iOSのアプリケーションを開発する際にSQLiteデーターペースを扱うための高次のライブラリィが提供されていない所に、FMDBというオープンソースライブラリィがあることを知り、大変に便利に使わせて頂きました。 ccgus/fmdb · GitHub 一方でandroidSQLiteにアクセスする際にはSDK標準で提供されているSQLiteDatabaseクラスを使用してました。SQLをあまり意識せずに使える一連のAPI群は非常に便利であり、生のSQLを書くのが嫌いな私はandroidと同様の使い勝手をFMDBに求め

    FMDBExtensionsを公開しました - Kazzz's diary
    efcl
    efcl 2013/05/07
    FMDBの拡張ライブラリ。 PRAGMA user_versionとか、blocksの扱い、基本的なSQLをメソッドで叩けるようになってる
  • CCC(Carbon Copy Cloner) - Kazzz's diary

    MacBook Proのメモリを増設するに当たって、ブート可能なイメージでSSDの内容(100GB強)を完コピでバックアップを取りたかったのだが、Timemachineを初期実行すると「残り5日」とかトンでもない見積もりを出しやがるので(実際に3日やっても終わらない)、いい加減愛想がつきた。 Macで他にフルバックアップを取る方法はいくつかあるのだが、評判の良いツールを使ってみることにした。 Mac Backup Software - Carbon Copy Cloner CCCはインストールも簡単(ZIPファイルを解凍してAppフォルダにコピーするだけ※)だが、バックアップも簡単だ。 コピー元のボリウム(内臓SSD)、コピー先のボリウム(外付けHDD)を指定して、クローンを選択するだけ。簡単といってもフォルダ、ファイルをコピー対象から外すことは勿論のこと、コピー先にしかないフォルダ、ファ

    CCC(Carbon Copy Cloner) - Kazzz's diary
    efcl
    efcl 2013/04/07
    macのバックアップアプリ
  • iOSプログラミングの注意点 (その1 - Kazzz's diary

    Objective-Cを使ったiOSアプリケーション開発を初めてから半年以上経ち多少は慣れてきた。その中で他のプラットホームと比べてiOS上でのプログラミングで注意すべき点を幾つか上げていこう。 EXC_BAD_ACCESS 恐らくiOSプログラミングを初めて最初に遭遇するクリティカルなエラーはEXC_BAD_ACCESSだろう。 このエラーの原因の殆どは既に解放されたメモリ領域(大抵はオブジェクトを指していたポインタ変数)にアクセスすることだ。 Xcode環境ではコンパイル時のオプションで解放済みの変数に対してNSZombieオブジェクトをセットすることでデバッグを容易にする仕組みがあり、そのためにこのエラーを「ゾンビオブジェクトの発生」等とも呼んだりする。(解放済みのオブジェクトをアンデッドに例えるのは面白いと思う) objective-Cでは変数は生成されて所有権を設定(retain

    iOSプログラミングの注意点 (その1 - Kazzz's diary
    efcl
    efcl 2012/10/12
    ARC下でEXC_BAD_ACCESSを発生させるコード例
  • ZxingObjc - Kazzz's diary

    TheLevelUp/ZXingObjC ZxingObjcはCosta Walcott氏の書くZxingのObjective-c portingだ。 ※ 以前に「iPhoneで使用できる1D/2Dバーコードリーダーライブラリィ」というエントリを書いたが、その時結論は書かなかったものの総論としては 「ライセンスに難があるものの、2D/1Dバーコードの両方が安定して読めて使いやすいZBarがお勧め」 だった。事実、私が書いたアプリケーションでもZBarを組み込んでいる。 しかしだ。ZXingObjcは家ZXingをiOSで使う際の弱点をほぼ克服しており、それでいてライセンスは家ZXing同様Apache 2.0ライセンスである。これはiOSで使えるバーコードライブラリィとしては一気に先頭に躍り出るのではないだろうか。 ちなみにこれもますいさん情報だが、リポジトリからのクローンでは駄目で、

    ZxingObjc - Kazzz's diary
    efcl
    efcl 2012/08/25
    2D/1Dバーコードリーダーのライブラリ
  • シンボリック・ブレークポイント - Kazzz's diary

    Unrecognized Selectorのようにどこのメソッドが実行された際に発生したか判り難いエラーの場合、以下のシンボリック・ブレークポイントを作ってやることで、直接的にどこでエラーが発生したかが分かり易くなる。 -[NSObject doesNotRecognizeSelector:]NSObject-doesNotRecognizeSelector:メソッドはランタイムにレシーバであるオブジェクトが応答出来ないメッセージを受信した時にこのメソッドを呼び出すので、このシンボルに対してブレークポイントを設定することで同エラーを検出できる訳だ。。 追加の仕方は、ブレークポイントナビゲータ(cmd + 6)の左下の+ボタンから"Add Symbolic Breakpoint"を選択して、その後ダイアログにシンボルを入力すれば良い。(ライブラリィやブレークした場合のアクションも指定できるが

    efcl
    efcl 2012/08/25
    -[NSObject(NSObject) doesNotRecognizeSelector:]にブレークポイントを貼って、Unrecognized Selectorのエラーの発生場所を検知する方法
  • Xcode 4.4 - Kazzz's diary

    先日、AppleのOSであるMac OS X 10.8 "Mountain Lion"が発売されたが、私の興味はもっぱらXcodeの新版であるXcode 4.4である。 マイナーバージョンアップであり、ぱっと見では違いが分かり難いのだが、実は大きく変わっている。 ・The compiler automatically calls @synthesize by default for unimplemented @properties. 自動プロパティ@propertyだが、必ずimplementationに対になる@synthesizeを記述する必要があったのが省略できるようになった。 ・For the NSArray and NSDictionary classes, support is provided for Objective-C literals. NSArray 、NSDic

    Xcode 4.4 - Kazzz's diary
    efcl
    efcl 2012/08/02
    Xcode4.4のアップデート内容の訳
  • UIAlertView showが遅延する - Kazzz's diary

    UIAlertViewは他のプラットホームで言う所の「ダイアログ」や「メッセージボックス」である。 デスクトップOSでのダイアログやメッセージボックスとは違い、スレッドをブロックせず、モーダルでも無い。そこで処理が止まらないので、RunLoopを使って同期処理にする方法もあるのだが、今回はそうではなく来の使い方。 UIAlertViewは以下のようなイディオムで簡単に表示できるのだが、 UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"タイトル" message:@"メッセージ" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK",@"Cancel",nil] ; [alert show]; このコードの呼び出しネストが深かったり、スレッドを跨いだりすると

    UIAlertView showが遅延する - Kazzz's diary
    efcl
    efcl 2012/06/28
    UIAlertViewの表示が遅れるのを回避する方法について
  • NSProxy - Kazzz's diary

    JavaやC#でクラスのメッセージに対する振る舞いを動的に変更しようとした場合、必ずといって良い程お世話になるのがProxyクラスだが※、Objective-Cにもちゃんとある。 NSProxy Class Reference - Mac OS X Developer Library NSProxy.h @interface NSProxy <NSObject> { @public Class isa; } 〜 @endヘッダはこのようにNSObjectクラスを継承せずにNSObjectプロトコルに準拠するだけになっている。実際にこのクラスをスーパクラスにして何かのクラスを書いて静的なインスタンスを生成してみれば、殆どのメソッドが実装されていないことが解るだろう。 NSProxyは他のクラスのプロキシとなるために用意されたクラスであり、プロキシに送信されたメッセージをターゲットに送ってやる

    NSProxy - Kazzz's diary
    efcl
    efcl 2012/04/27
    処理を挟むプロキシ
  • iOS開発で使えるXMLパーサ - Kazzz's diary

    URLやFileに接続してXMLを取得〜解析するためのライブラリィ、いわゆる「XMLパーサー」だが、iOSで使用することができる実装はどのようなものがあるのだろう。 NSXMLParser NSXMLParser Class Reference Cocoa/Foundationの標準XMLパーサ。※ SAX形式であり、恐らくは一番よく使われているパーサだろう。 SAXでありタグ駆動ということでコードが大きくなりがちだが、SAXは馴染みが深い開発者が多く使いやすいことが予想できる。 libxml2 The XML C parser and toolkit of Gnome libxml2は元々はGNOMEのためにCで書かれた標準的なXMLパーサだったが、Cの標準的なパーサとして様々なプラットホーム言語に移植されており、Max OS X用にポーティングされた実装がiOS SDKから直接使用する

    iOS開発で使えるXMLパーサ - Kazzz's diary
    efcl
    efcl 2012/04/27
    iOSのXMLパーサー
  • Method SwizzlingでNull挿入パターンを実装する - Kazzz's diary

    NSMutableArray、NSMutableDictionary等のCocoa標準のコレクションクラスは要素にnilを許さない。 さすがにそれでは不便だろうということでNSNullオブジェクトが用意されておりnilの代わりに格納することができるのだが、要素がnilかどうかチェックしてから格納するのは面倒だし、nilを無視するのがObjective-Cはずだったはずだ。 NSMutableDictionary(NSMutableArray)はnilを格納できない。 NSMutableDictionary* dic = [[NSMutableDictionary alloc] initWithCapacity:10]; if (aObject != nil) { [dic setObject:aObject forKey:@"key1"]; } else { [dic setObject:

    Method SwizzlingでNull挿入パターンを実装する - Kazzz's diary
    efcl
    efcl 2012/04/23
    NSMutableDictionary#setObjectでNULLチェックを毎回しないでMethod SwizzlingでNULLチェック入りのと置き換える
  • 1