あるオブジェクトから別のオブジェクトへイベントを通知したい場合、Delegate(protocol)かNotificationいずれかの方法で実装できます。どちらを使うかはケース・バイ・ケース。今回はその使い分け方について説明します。 ※ あくまで自分の経験則によるものです。 ここでのDelegateの説明はDatasourceも含むことにします。要するにprotocolで定義したメソッドを使ってやり取りする場合です。 Delegateを使う場合 通知を受けるオブジェクト(通知先)が1つだけである 通知元オブジェクトと通知先オブジェクトが緊密な関係にある 通知元と通知先の間で1つ以上のやりとりがある 通知元と通知先で相互的なやりとりがある より具体的に言うと 通信のように非同期処理を行い、その結果を受け取る場合 ViewControllerがSubviewからのイベントを受け取る場合 通知
GCD(Grand Central Dispatch)を使って, バックグラウンド処理を行います。 iOSでは, NSOperationを使った方法でも可能です。方法と挙動は似たようなものです。 dispatch_asyncを使うメリットとしては, 処理の記述にブロックが渡せるので, クラス同士の データの受け渡しが簡単(closureのように使える訳ですはい)です サンプル dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // Background operations dispatch_async(dispatch_get_main_queue(), ^{ // Main Thread }); }); これだけです, dispatch_asyncを呼び出すだけです。Queu
2016.4.29 追記:Swift版の記事を書きました blog.koogawa.com iOS 5から追加された CIDetector を使って、顔検出機能を使う方法をメモしておきます。 実装方法 まずは「CoreImage.framework」を追加します。 インスタンスを生成します。 NSDictionary *options = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]; CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:options]; detectorOfType には検出タイプを指定します。今回は顔検出なので、CIDet
こんにちは!12/11担当の @koogawa です。どうぞよろしくお願いします。 さて、iPhoneには「加速度センサー」や「電子コンパス」など、いろいろなセンサーが搭載されていることはご存知だと思います。そこで今回は、iPhoneで検知できる様々な情報とその実装方法を、10個ピックアップしてまとめてました。メジャーなものからマニアックなものまで色々揃えましたので、何か一つでもお役に立てたら嬉しいです。 では、いってみましょう! 光・音声系 1. 輝度センサー iPhoneの画面輝度(明るさ)が取得・設定できます。 画面輝度=周りの明るさなので、輝度が高ければユーザが明るい場所にいると判断することもできそうです。ただ、中には画面輝度を固定に設定しているユーザもいるので、一概にこの基準が当てはまるとは限りません。 実装方法 画面輝度は次のように取得できます。
iOS 8で追加されたAudio機能に関するメモです AVAudioEngine 接続されたAVAudioNodeのグループを定義 オーディオ信号を生成・加工したり、inputやoutputに信号を流すためにAVAudioNodeを使用する 各AVAudioNodeをそれぞれ作成し、AVAudioEngineに装着する 実行中における、AVAudioNodeに対する操作(接続、接続解除、リムーブ)には多少制限がある ミキサーのupstreamにあるAVAudioNodeである場合のみ再接続できる inputとoutputのchannel数が異なるAVAudioNodeやミキサーをリムーブした場合、graphが壊れてしまう AVAudioFile 読込/書込のために開くことができるオーディオファイルを表すクラス ファイルの実際のフォーマットに関係なく、 AVAudioPCMBufferを使用
Hack for Japan 7/30 ハッカソン仙台会場で「堪忍袋」というアプリの根幹を実装しました。 アイディアとして、いびきなどの音に反応して爆発音を鳴らすという単純な仕掛けですが、 肝はマイクで一定以上の音の大きさを検知することが必須となります。 今回は、AudioToolboxのAudioQueueServicesを使い、AudioQueueLevelMeterStateのpeakPowerをスレッドで監視させて実装しました。 SoundPickerViewController.h #import <UIKit/UIKit.h> #import <AudioToolbox/AudioToolbox.h> @interface SoundPickerViewController : UIViewController { AudioQueueRef queue; } @end Sou
2016.4.17 追記:Swift版を書きました blog.koogawa.com Core Audioを使用して、マイクから音を検知する方法をメモしておきます。 実装方法 ヘッダをインポートします。 #import <AudioToolbox/AudioToolbox.h> 音声入力用のキューと監視タイマーを準備しておきます。 @interface AudioViewController : UIViewController { AudioQueueRef _queue; // 音声入力用のキュー NSTimer *_timer; // 監視タイマー } 記録するデータフォーマットを決めます。 AudioStreamBasicDescription dataFormat; dataFormat.mSampleRate = 44100.0f; dataFormat.mFormatID =
Mount the downloaded DMG by double clicking it. Drop the SimPholders icon onto the Applications icon. Done! Releases 3.0.12 Fixes Opening databases in MongoDB Realm Studio 3.0.11 ADDED Opening databases in MongoDB Realm Studio Support for Apple Silicon 3.0.10 FIXED A severe bug causing extreme high CPU usage. 3.0.9 FIXED Bug in the FilePresenter implementation which could result in a crash in the
iOS開発においてNSLogを利用する事が度々あると思いますが、 それらを少し便利するようなTipsのご紹介を。 ※若干俺得感がありますが。 以前もブログに簡単に書いたのですが、記事が分かれてしまっていたので まとめる意味も込めて。 iOS向け Xcode開発Tips入門編 -とりあえず最初にやってること- 【iOS】 Xcode開発Tips入門編その3 -NSLogあれこれ3つほど- こちらにも紹介しましたが、マクロを使う事でよりログ出力がよりシンプルに 実装できます。 0. デバッグ時のみに出力し、リリース時には出力をしない。 NSLogで出力しているものをそのままリリースすると だだ漏れするという問題が発生するので、
「詳解 Objective-C 2.0 第3版」の内容 「Objective-Cの文法に関するすべてが詳細に載っている!」って感じの本です。なので内容は難しめ。ボリュームも凄くて、なんと636ページあります。 あくまでもObjective-Cの文法に関する本なので、Xcodeの使い方や、画面部品の使い方などは載ってません。ですので、そこら辺に関しては他の本を買って読んでみてください。 こちらの記事でも本書の内容についてレビューを書いているので、参考にしてみてください。 入門を終えたiOSプログラマにとっては必読 – 書評「詳解 Objective-C 2.0 改訂版」 – 拡張現実ライフ また、この記事の最後には目次を引用しておくので、そちらもぜひチェックしてみてくださいね。 「詳解 Objective-C 2.0 第3版」の対象者 「アプリ開発の入門書は読み終わったんだけど、Object
Knowing your tools inside out is paramount - because you spend countless hours with them. If Xcode is one of the tools you use, we have something for you: we created a nice cheat sheet that we would like to share with you. On the front you can find all the essential keyboard shortcuts. On the back, our "tips & tricks" help you get the most out of Xcode. Download the Cheat Sheet Get 16 of our most
http://engineeringblog.yelp.com/2013/11/whoa-that-embedded-web-view-looks-hot-in-your-ios-app.html Yelpがエンジニアブログで、ネイティブのユーザビリティを崩さずにweb viewをネイティブアプリに組み込む工夫を紹介しています。 Yelpのモバイルトラフィックは、2013年の第3四半期平均で月間1,100万ユニークデバイス iOSにおいてアプリにウェブを組み込む一般的な手法は、UIWebViewをつくって、それにURLを渡すことだが、それだと、読み込み中のままコンテンツがすぐに表示できない事態に陥ることになる。 1) ネイティブっぽいページ遷移を実現する まず、前提として、UIWebViewはURLのリクエストを読み込もうとするとき、そのdelegate(通常はcontroller)を呼び
iOS5からサポートされているARC(Automatic Reference Counting)は今まで使う機会がなかったので名前だけ知ってるみたいな状態でした。 今さらですがいろいろ調べたので調査結果をまとめたいと思います。調査した環境は以下になります。 Mac OS X 10.8 Mountain lion Xcode 4.6.3 まずは参照カウンタ方式の復習 ARCは基本的には以前と同じ参照カウンタ方式を自動化したものなので、ARCをやる前にまずは手動でのメモリ管理を復習します。 まずは新しいプロジェクトを作成します。テンプレートはCommand Line Toolを使います。 今回は手動でメモリ管理するのでARCはチェックを外しておいて下さい。 プロジェクトが作成できたらCarクラスとEngineクラスを作成して下さい。テンプレートはObjective-C classです。 サンプ
Android, iPhone等のスマートフォン向けアプリ開発などの話題を中心に、時事ネタなどを気の向くままに書いています。 iOSアプリ(iPhone/iPod touch、iPad)もAndroidアプリ同様に不正使用が行われています。 しかし、Androidと比べると情報が少ないのでわかりにくいのですが、確実に不正使用されています。 そこで多くの開発者の方に情報を共有する事を目的に備忘録を兼ねて少しまとめてみたいと思います。 間違いがありましたならばご指摘ください。 なお、以下に記載するのは開発者向けの情報で、悪さをしようとしている人達に情報を与えるつもりは一切ありません。 参照: Androidアプリの不正使用対策 – 不正使用の現状 – iOSアプリの不正使用方法に付いて話す時に触れないといけないのは、Jail Break(脱獄)だと思います。 Jail Breakは、Andro
Xcode 4.4 から Objective-C が書きやすくなりました、という今更のいまさらな話ですが、ネット上に転がっている少し前のサンプルソースなどは古い書き方のものもあるようなので、今回はよく使う NSArray と NSDictionary と NSNumber の書き方についてだけ備忘録として残しておこうと思います。 NSArray インスタンスの生成 // 古い書き方 NSArray *oldArr = [NSArray arrayWithObjects:@"value1", @"value2", @"value3", nil]; NSMutableArray *oldMutableArr = [NSMutableArray arrayWithObjects:@"value4", @"value5", @"value6", nil]; // 新しい書き方 NSArray *n
第4回はGUI デザインを行うもう一つの方法として、Xcode 4.2から新たに搭載されたストーリーボードの使用方法について説明します。 ストーリーボードの概要 Xcodeに組み込まれたInterface Builderを使う場合は、Nibファイルを使用して画面(ビュー)の遷移は基本的にユーザーがプログラムで記述する必要があります。それに対して、Xcode 4.2以降に搭載された「ストーリーボード」(Storyboard)を使用すると、複数の画面の遷移をグラフィカルに構築できるようになります。 ストーリーボードでは、個々の画面を構成する「ビュー」と「ビューコントローラ」の組み合わせを、「Scene」(シーン)として管理しています。シーンからシーンへの切り替え時の視覚効果を「Segue」(セグエ)として設定できます。Segueとは、音楽でよく使用される用語で「楽曲などを切れ目なく続けて演奏す
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く