iOS

FMDBExtensionsを公開しました

Kazzz/FMDBExtensions · GitHub FMDBExtensionsはiOSのSQLite用ライブラリィであるFMDBとandroidのSQLiteDatabaseクラスにインスパイアされて書いた、iOSのSQLiteデータベース用ライブラリィです。 経緯 iOSのアプリケーションを開発する際にSQLiteデーター…

AirPrintはBonjourを話すとは限らない

!= 先日AirPrint対応のプリンタをandroidから制御してみようというエントリを起こしたのだが、これは困難なのかもしれないと思いはじめている。無知な私はAirPrintはBonjourに対応した印字機能を持つプリンタのことを指すのではないかと勝手に思い込んでいた…

AirPrintとandroid

AirPrint対応のプリンタを買う予定なのだが、MacやiOSから普通に使えるのは当たり前として、androidからも同様にアクセスしたい。そのためのアプリがあるであろうことは想像がつくのだが、折角なので自力でやってみたいのだ。 1. 環境の準備 開発環境は整っ…

REkit

zuccoi/REKit · GitHubREkitはMac/iOSのFoundationクラスであるNSObjectを拡張するカテゴリで提供されており、Objective-Cの動的な機能とBlocksを活用して、Objective-Cのイディオムを拡張することができる。 REResponder オブジェクトインスタンスのメソッ…

OCUnitテストターゲットにて"ld: file not found"でビルドできない

ld: file not found: /Users/kazz/Library/Developer/Xcode/DerivedData/プロダクト名-eiottghqglskmzegzcmbbdbkgyhh/Build/Products/Debug-iphonesimulator/プロダクト名.app/プロダクト名 clang: error: linker command failed with exit code 1 (use -v t…

iOS6.0以降、GCDの'dispatch_release'はARC環境では使えない

以前GCD(Grand Central Dispatch)のエントリを書いた時に dispatch_release(group) グループは有限のリソースのため、使用が終わったら必ず解放する必要がある。(ARCの影響を受けないことに注意) と書いたが、iOS 6.1のプロジェクトを新たに作成して以前のコ…

cvBlobsLib (その2)

cvBlobsLib - OpenCV Wiki cvBlobsLibが使えそうだということは解ったのだが、問題は主要なモバイルプラットホームで使えるかどうかだ。 iPhone(iOS) aaronsung/cvBlobsLib-iOS · GitHub Objective-C(++)へのポートとも言える実装。本家と同等に使えそうだ。…

モバイルの悩み

OpenCVを使ったアプリケーション、それもモバイルアプリケーションで一番の悩みはデスクトップ等に比べてリソースの制約が大きいことだ。 MPU メモリ GPU モバイルプラットホームはこの2年で飛躍的な進歩を遂げたが、それでも一般的なデスクトップPCに比べる…

GPUImage その2

ちょっと空き時間が出来たのでサンプルを動かしてみたが、やはり性能は素晴らしい。静止画は勿論のこと動画でも即時にフィルタが適用されるため、キビキビと動く画像操作アプリケーションが書けることだろう。しかし私のように、画像を解析してオブジェクト…

GPUImage

BradLarson/GPUImage - GitHub GPUImageはBSDライセンスで利用できるiOS用の高機能の画像処理ライブラリィだ。 実装は一部にOpenGL ES2.0を下地にしておりGPUアクセラレーションを利用できるため、CoreImageやOpenCVに比べて高い性能が期待できる。(ベンチマ…

UITextFiledにInputFilter風のバリデーションメソッドを追加する

androidのEditTextクラスにはEditableインタフェースを経由して使うInputFilterインタフェースが用意されており、これを使って入力文字列のフィルタやバリデーションに使用することが出来た。[android]EditableとInputFilteriOSの場合、文字列自体を置き換え…

ビュー上に直接文字列を描画する

android androidの場合、オーバライドされたonDrawメソッドのコンテキスト中でCanvasクラスのインスタンスの参照を得ることができるので、そのCanvasのメソッドを使って直接文字列を描画できる。 @Override public void onDraw(Canvas canvas) { super.onDra…

AppCode 2.0EAP

AppCode 2.0EAPを一通り使ってみた。 1.6に比べてかなり改善されておりこのまま使えるかなーとも思うのだが、画面のデザインになるとやはりXcode(InterfaceBuilder)が起動されてしまう所で我に返る。しかしそれでもAppCodeを使う意義がある。それは"Optimize…

Yardbirds Radio Plus

Yardbirds Radio Plus /Rikki Systems Inc. - iTunes App StoreYardbirds Radio PlusはインターネットラジオとWebDAVサーバー上のストリーム再生を行ってくれるiOSアプリケーション。勿論音声出力はPHA-1を経由して聴くことが出来る。バッファリングさえ成功…

フォトアルバムから写真を取得する

UIImagePicker(Controller)を使用してカメラから撮影した写真、又はフォトアルバムに格納されている写真をアプリケーションに取り込む場合、delegateを自身にセットして以下のようなコードを使うだろう。 - (void)imagePickerController:(UIImagePickerContr…

viewDidLoadでUIView.Frame.Sizeは確定しない

同じシーケンスで機能を呼んでいるのに、表示されるビューの座標特に高さが変わるという、しつこいバグに悩まされていたのだが、極めて単純な原因だった。それはログを採取することですぐに分かった。 [DEBUG] self.frame.size.width (viewDidLoad) -> 320.0…

ミイラ取りがミイラに

iOSで複数ある画面(UIViewController)のうち、特定の画面だけ向きの変更を許可する(許可しない)にはどのような実装が良いか。ベタな実装としては全てのViewControllerにshouldautorotatetointerfaceorientationを個別に実装する方法があるが、これはスマート…

AppCode 2.0がかなり良くなっている件

AppCode 2.0 EAP build #124.306 | JetBrains AppCode Blog Retinaに対応しただけでも素晴らしいが、かなり手を入れたらしく全体的にとても軽くなっていることが分かる。1.6まではXcodeに比べて不便な所が多くちょっとメインで使う気にはならなかったたが、…

ビューと2D描画

昨日も書いたが、iOSで書いたカスタムビューをandroidに移植している。 主な機能としては、昨日も書いたように画像のプレビューの他に、 タップした箇所にポインタ(円)を描画 ポインタ同士を線分で描画して接続 3点以上をタップした際にポインタで閉じた領域…

CGRectContainsPoint

CoreGraphicsのCGGeometry.hには同フレームワークで使用する型等と共に、様々な便利な関数が用意されている。1番に使えるであろうCGRectContainsPoint。第一パラメタにCGRect、第二パラメタにCGPointを取るこの関数は、特定の座標が矩形に含まれているかをbo…

approxPolyDP

久しぶりにOpenCVネタ。「久しぶり」といっても触るのが本当に久しい訳ではなく、実際には色々と試しては壊しているのだが。 OpenCVは根っこの部分になると線型代数学等の私が全くからきしな分野になるし、その逆にプログラミングに降るとAPIの粒度が非常に…

OpenCVはC++で書くことにする

OpenCVを学ぶ時には確か「Objective-Cとの相性もあるし、Cで統一することにする」と書いたと思うが、初版の事情でC++に統一して書くことにする。 理由は色々あるが、OpenCVというライブラリイ(というかもうこれはプラットホームだよな)の学習を進めるに従っ…

xcodebuild

XcodeにはIDEの他にコマンドラインからXcodeプロジェクトをビルドできるxcodebuildが用意されている。これでコマンドからも簡単にビルドできるのだが... $ cd hoge $ xcodebuild -configuration Release -sdk iphonesimulator5.1所謂普通のプロジェクトだとX…

UIViewContollerの遷移とライフサイクルメソッド

モーダル画面の遷移がある場合のUIViewControllerのライフサイクルメソッドの呼ばれる順に関して混乱したので、再度まとめる。(前にも同じ内容のエントリをポストしたかもしれない)UIViewController A を表示した後に、UIViewController Bに遷移する場合、メ…

アプリケーション提出時の心得

iTunes Connectにアプリケーションを提出した後に、そのアプリが実際には動かないことに気がついた。この場合バイナリだけをこっそり置き換えるなんてことは出来なくて、一旦提出したバイナリをリジェクト(破棄)して、状態をアップロード待ち状態にした後に…

lexical or preprocessor issue ,file not found

自宅のMacBook Pro Retinaでは上手くいくOpenCVを使ったアプリのビルドが、職場のMacBook Proで通らない現象だが、漸く判明した。このアプリケーション、Xcode上でフレームワークとして作られたopencv2.frameworkをプロジェクトに組み込んでいるのだがそのフ…

Build Settingsのエクスポート

自宅でビルドに成功しているOpenCV用のプロジェクト、職場ではどうやっても失敗するのでその違いを調べるためにも自宅のプロジェクトで使用しているプロジェクトのBuild Settingsをまとめてエクスポートしたい。一応、COMMAND+Aで全選択した後にクリップボー…

ホットスポット

昨日のエントリでデバッグシンボルが正しく割り当てられたので、iPod touch実機上で正しくプロファイリングが出来た。 結果その1 (invert Call tree on) "invert Call tree"によってスタックトレースを反転しているので、原因のあった行が先に表示される。時…

iOSプログラミングの注意点 その3 (UITextUnBlinder修正)

先日アップしたBBUITextUnBlinderだが早速バグが見つかったので修正(恥bb_keyboardDidShow等で通知メソッドのパラメタから内部ソフトウェアキーボードの高さをCGRectとして取得しているが、キーボードの高さはデバイスの向き(Portraint/Landscape)でフィール…

iOSプログラミングの注意点 その3 (UITextUnBlinderを作成する)

iOSで面倒なことの一つにソフトウェアキーボードの制御がある。 Androidの場合、殆ど制御が要らないように上手くできているのに比べてiOSのそれは出たら出っぱなしでそのままでは閉じることも出来ず、他のコントロールを隠してしまってホームに戻ることしか…