タグ

ブックマーク / griffin-stewie.hatenablog.com (8)

  • CXCKeyValueObserver をパクった CSNNotificationObserver ってのを作った - griffin-stewieのブログ

    表題の通りです。 2週間くらい前に id:cockscomb さんが CXCKeyValueObserver というライブラリをリリースしていました。これはどんな感じのライブラリかっていうと KVO の 監視開始/終了 忘れず安心に実行できる 複数 KVO を使っても通知を受けた後の処理が監視単位ごとにスッキリ分かれる っていうシンプルながら KVO の面倒くさいところが綺麗にまとまっているものです。 このコードを見たときに 確かに監視する側(感覚的には監視を管理する側)が死ぬときに自分で後始末すればいいよな ARC な今どきならインスタンス変数として保持しておけば、オーナーが死ぬときに自動的に死んでくれるよな と気づきました。 そこで、同じ方法で Notification も監視管理してしまえってことで作りました。 CSNNotificationObserver NSNotificati

    CXCKeyValueObserver をパクった CSNNotificationObserver ってのを作った - griffin-stewieのブログ
    efcl
    efcl 2014/03/02
    CXCKeyValueObserverのNSNotification版みたいライブラリ。
  • UIView の frame を Blocks を活用して変更する - griffin-stewieのブログ

    昨日、なんで今までこれをやってなかったんだろう?と思ったこと。 frame 弄るのダルい UIView の layout 時に label.frame.origin.y = 5; とかしたいところですけど出来ません。 この程度の事で label.frame = CGRectMake(CGRectGetMinX(label.frame), 5, CGRectGetWidth(label.frame), CGRectGetHeight(label.frame)); とかはダルすぎるので、一回変数に受けておいてから CGRect frame = label.frame; frame.origin.y = 5; label.frame = frame; くらいが妥当なところでしょうか。 これだと以下のような問題によく陥ります。 複数のViewのレイアウトを行う場合に一時変数名に困る 変更した re

    UIView の frame を Blocks を活用して変更する - griffin-stewieのブログ
    efcl
    efcl 2014/01/25
    UIViewに対してカテゴリでframeを編集出来るメソッドを付けていじれるようにする。 ({ codeblock })みたいに一時的な変数とかを作っても問題なくできる
  • App Switcher に表示される View を差し替える補助ライブラリ MMAppSwitcher - griffin-stewieのブログ

    以前アプリの画面を開いているアプリケーションのプレビュー画面から隠すというものを書きました。先日たまたま見つけたライブラリがこのような処理を補助するものがあったので一応ご紹介。 MMAppSwitcher というライブラリです。使い方的には MMAppSwitcherDataSource プロトコルを実装して App Switcher に表示して欲しい View を返す感じです。 ライブラリの内部的には UIApplicationWillBeginSuspendAnimationNotification という非公開な Notification をきっかけに App Switcher 用の View を表示させているようです。非公開なものなので若干審査だったり将来のバージョンアップとか大丈夫かな?って気がしますね。 こんなことをしている理由として推測するには、applicationDidE

    App Switcher に表示される View を差し替える補助ライブラリ MMAppSwitcher - griffin-stewieのブログ
    efcl
    efcl 2014/01/21
    画面切り替え時に任意のViewを表示できるライブラリ
  • はてなインターンのサンプルコードを読んでの感想 - griffin-stewieのブログ

    はてなさんが はてなインターンで利用したiOSアプリ等のサンプルコードを公開しました - Hatena Developer Blog という素敵なサンプルコードを公開してくれたので、好き勝手に感想を書いてみたいと思う。来は Web アプリ側も動かしたかったんだけど、ウマく環境が作れなかったのでアプリはコードを読んだだけで動かしてはないです。あと、細かい検証とかしてないので勘違いとかしていると思うので指摘してください。 参考になった真似したい NSError と UIAlertView の使い方 NSError の内容ベースでエラーアラートを出すのは理にかなっていると思った。OS 側が返す NSError は期待する値が入っていない不親切な場合があるので、オリジナルの NSError から一度適切な値を持った NSError を再生成して返すクラスを介したらいいのかもしれない。 すっきりし

    はてなインターンのサンプルコードを読んでの感想 - griffin-stewieのブログ
    efcl
    efcl 2013/10/14
    UIAlertView + NSError, nilチェック
  • アプリの画面を開いているアプリケーションのプレビュー画面から隠す - griffin-stewieのブログ

    iOS 7 以前でも、アプリ実行中にホームボタンを押してまた、そのアプリに戻ってきた場合には OS が作成した画面のスクリーンショットが表示されていました。プライバシーが気になるようなアプリでは Home に戻る直前の画面をそのまま次回前面になったときに使われると困ることがあります。家計簿等のお金を扱うアプリだと独自に暗証番号でロックできるようになっていますが、私が使っている「マネー2」は前面に戻ってきた時にちらっと前の画面がうつってからロック画面に移行してて何だかなぁと思っていました。iOS 7 になってからはホームボタンを2回押して出てくる最近使ったアプリ一覧画面にプレビュー画面が付いて Exposé 風になりました。Exposé 風になったことでますますこの問題が出てきてしまって気になったのでどうすれば良いのか試してみました。 iOS App Programming Guide iO

    アプリの画面を開いているアプリケーションのプレビュー画面から隠す - griffin-stewieのブログ
    efcl
    efcl 2013/10/11
    iOS7のバックグラウンドアプリの選択画面での表示を変更する。 applicationDidBecomeActive/applicationWillResignActiveのライフサイクルでViewを追加する
  • CGRectDivide のすすめ - griffin-stewieのブログ

    前回も座標系だったんですけど今回も座標系。 CGGeometry にはいろいろ地味に便利な関数が揃ってるんですけどあまり日の目を見ない気がするので CGRectDivide について書こうかと思います。 使い方と得られる結果が理解しにくい CGRectDivide は任意の Rect を指定した方向から切り取り2つの Rect に分割してくれる関数です。 定義は以下の通り。 void CGRectDivide ( CGRect rect, CGRect *slice, CGRect *remainder, CGFloat amount, CGRectEdge edge ); 実行するとこんな感じ。 CGFloat amount = 44.0f; CGRect baseRect = self.view.frame; CGRect sliceRect = CGRectNull; CGRect

    CGRectDivide のすすめ - griffin-stewieのブログ
    efcl
    efcl 2013/08/21
    CGRectDivideの使い方について。 GCRectを分割して、それぞれのCGRectを受け取れる
  • 複数の非同期処理を前の処理結果を受けとりつつ数珠つなぎに直列に書きたかった時に参考にしたコード - griffin-stewieのブログ

    以前 @xcatsan さんのこちらの記事をさっきみてて思い出したので備忘録として。 以前、非同期で実行される処理の塊を直列に順序を決めて実行したいというシチュエーションがありました。そのときにぱっと浮かんだのは昨日の Cocoa 勉強会関西で@yashigani が発表した内容 にも登場した NSOperation と NSOperationQueue でした。「非同期で実行される処理の塊を直列に順序を決めて実行」だけならそれでも良かったんですが、その処理の塊の結果を次の処理の塊に受け渡す必要がありました。さらにその処理結果によって次以降に実行する処理の塊も振り分けるとか…。基的に非同期処理のコールバックは Blocks を使うことは僕の中できまっていたので Blocks の入れ子とか地獄なのは分かっていたのでどうにかしたかった。 やりたかったこと要求されてたこと UI から1つのタス

    複数の非同期処理を前の処理結果を受けとりつつ数珠つなぎに直列に書きたかった時に参考にしたコード - griffin-stewieのブログ
    efcl
    efcl 2013/08/09
    NSOperation と NSOperationQueue
  • 簡単なバージョン番号の比較方法 - griffin-stewieのブログ

    最近、頑張って比較してるのにバグっている見たコードをみました。簡単な比較方法を知らない人もいるのかもと思って書いてみます。 たまに求められるバージョン番号比較 何らかの理由でバージョン番号の比較をしたいときってありますよね?○○バージョン以上なら△△するとか。求められる内容によって Class オブジェクトが生成できるかどうか? respondsToSelector: で期待しているセレクターが呼べるか? とか方法はいろいろありますが、今回は文字列での比較の話です。 文字列ベースで比較 文字列ベースでのバージョン番号の比較ってどうしてますか? integerValue とか floatValue とかで数値化して比較してますか?最近見たコードでもそのような比較をしてました。でも、バージョン番号って 「5.1」とかなら単純に数字にしてしまって比較できますが、「5.1.1」とかだと少数でもない

    簡単なバージョン番号の比較方法 - griffin-stewieのブログ
    efcl
    efcl 2013/02/25
    バージョン番号の比較
  • 1