タグ

delegateに関するjustoneplanetのブックマーク (8)

  • Blocksを使ったHTTPリクエスト - mixi engineer blog

    聖闘士星矢Ωが、思ったより面白くて小宇宙が軽く爆発しそうなk_kinukawaです。 今回は、iOSアプリでHTTP通信を行うときの話です。 2012年4月27日 「メインスレッド上で処理している」について一部修正 従来のNSURLConnectionは、レスポンスをdelegateでハンドリングしていました。 そのため、リクエストを投げる箇所とレスポンスを受ける箇所がコード上で離れてしまい、可読性がよくありませんでした。 また、レスポンスを受け取ったあとの処理についても、delegate内で条件分けをして処理をしているうちに分岐/ネスト地獄になりがちでした。 一方、iOS5からNSURLConnectionにsendAsynchronousRequest:queue:completionHandler:というメソッドが誕生しました。 引数を見る限り、GCDを使って非同期リクエストをする系

    Blocksを使ったHTTPリクエスト - mixi engineer blog
  • UIAlertView の delegate 束縛を解放しよう - mixi engineer blog

    どうも、佐野です。今回は UIAlertView の拡張カテゴリを作って、delegate ではなく Block でコールバック処理を記述するための拡張カテゴリの作り方を紹介します。 iOS4 から Objective-C では Blocks という独自のクロージャ機能が搭載されました。これによってアニメーションの記述やコールバック処理などグッと直観的・効率的に記述できるようになったのですが、残念ながら UIKit によって提供されているクラスの多くはまだ Blocks に最適化された作りになっていません。UIAlertView もそのひとつです。 UIAlertView は、その delegate を実装することでユーザアクションに対する処理を記述する訳ですが、どうも使い勝手が悪い。例えば、同じで画面内で2通りの UIAlertView を表示するような UIViewController

    UIAlertView の delegate 束縛を解放しよう - mixi engineer blog
  • background処理&delegate通知でのEXE BAD ACCESS対処法 | エンジニア開発記

    background処理&delegate通知はサクサク動かすために結構よく使いますが、一歩間違えるとEXE BAD ACCESSだらけになってしまいます。(経験談) どうやったらEXE BAD ACCESSを防げるのか、なんとなくわかったのでメモってみます。 おおまかな問題点 基的にはbackgroundの処理が終わる前にdelegate先のオブジェクトが解放されてしまうのが問題です。 しかし、これは単純にオブジェクトが解放されるときにdelegateをnilにするだけでは解決できません。 delegateで呼び出されたメソッドを実行中にオブジェクトが解放される可能性もあるのです。 この場合、delegate先のメソッドが呼ばれてるのでdelegateをnilにしても意味がなく、その後selfやメンバ変数を呼び出してしまうとエラーが出てくるわけです。 回避法 まず、よく使っていたbac

  • jQueryのliveやdelegateは実際何をやってるのか

    jQueryにはイベント制御のAPIとして、clickやmouseoverの元になるbindの他に、同じような呼び出し方のliveやdelegateが提供されている。 bindはDOM APIで提供されているaddEventListenerのwrapperだが、liveは以下のような実装になっている。 1. 第一引数のイベント名でdocument objectにlive用のイベントハンドラーをbindする 2. 1で設定したイベントハンドラー内でdocument object内に存在する要素上で発生したイベントを全てキャッチする ・イベントの発生元要素がbind時に設定されたセレクタに一致する場合、第二引数に指定されたユーザーのイベントハンドラーを呼び出す これはもともと「多量の要素に対してbindするとUIをロックしてしまう」という問題の対策として知られていた手法だが、liveはそれをj

    jQueryのliveやdelegateは実際何をやってるのか
  • [iPhone] UIWebView のリリース前に delegate に nil をセットする必要がある | Sun Limited Mt.

    UIWebView のインスタンスに delegate を指定している場合は以下のように release する前に delegate に nil をセットする必要があります。 - (void) viewDidLoad { webView = [[UIWebView alloc] init]; webView.delegate = self; .... } - (void)dealloc { webView.delegate = nil; [webView release]; } アップルのマニュアルにも以下のように書かれています。 Important: Before releasing an instance of UIWebView for which you have set a delegate, you must first set its delegate property to

  • UIWebView内の画面遷移をフックする - ぽんぽこ日記

    常時ネット接続を前提とした今日のスマートフォンであるところのiPhoneでは、サーバと通信することが前提のアプリを作ることが多い。 多くのRSSリーダのように、アプリケーション内部で非同期にサーバと通信して情報を取得し、iPhoneのネイティブのUIを使って情報を表示することも多いが、UIWebViewをつかってアプリ内部にWebブラウザ機能を用意し、HTML画面を表示して直接Webサーバとユーザが対話することも可能だ。 この場合問題になるのは、UIWebViewに制御がある間、ユーザの挙動やWeb画面の遷移はアプリがあまり把握できないことだ。 もちろん、ナビゲーションバーなどにボタンを付けておけば、ユーザはアプリの任意の画面に遷移することは可能だ。しかし、その遷移のタイミングをサーバ側で制御したい場合もある。具体的にはWebブラウザ画面上で、特定のリンクをクリックしたら、iPhoneアプ

    UIWebView内の画面遷移をフックする - ぽんぽこ日記
  • DelegateによるView切替え

    やっとDelegateについてわかってきた。 自分のクラスを他のクラスに受け渡す際、新たにクラスのインスタンスを作成しなくてくてもできる!ってことかも。 以下のように、複数のViewControllerを管理用のViewControllerを経由して切り替えてみる。 YosouViewController(管理用) LoginViewController(表示用) TopViewController(表示用) ・LoginViewControllerでログインボタンがクリックされたら、TopViewControllerに切り替える。 ・ページ切替の処理は、子のViewControllerからYosouViewControllerDelegateを経由してYosouViewControllerに委任する。 YosouViewController.h @protocol YosouViewCo

  • やっと Delegate がわかった! - That’s why, I’m here!

    iPhone SDKiPhone SDK を使っていると度々出てくる "Delegate"。これが使えないと画面の切り替えができない。ということは知っていたんだが、どうにも使い方がわからなくていつも困っていた。おかげで、私のアプリ Shuffle! は画面が切り替わらないわけだが。www 結局のところ必要に迫られ、ごにょごにょやってるうちに使い方がわかったので備忘録として書いておこうと。ついでにカテゴリ「iPhone SDK」も新設して、今後も気になることがあれば書いていこうと思う。 さて、Delegate を使う目的は、ずばりクラス間でデータをやり取りするためということでいいと理解している。例えば、普通の View に イメージを表示するMyImageView クラスがあるとする。ここで、MyImageView がクリックされたらメインの View にある Label で MyImage

  • 1