タグ

2013年7月22日のブックマーク (12件)

  • UIデザインについて改めてしっかりと学ぶために参考になるスライドまとめ

    こんにちは。 スマートフォンサイトやアプリにおいて、重要なことの一つであるUI(ユーザーインターフェース)。 また、PC向けサイトでも、よりユーザー目線に立ったUI設計が必要です。 UI設計ひとつで、大きくコンバージョンが上がったり、クリック率の増加が見込めるので、入念に考えなければなりません。 今回は、UIを徹底的に考えるために、UIについて様々な視点から書かれたスライドをご紹介したいと思います。

    UIデザインについて改めてしっかりと学ぶために参考になるスライドまとめ
  • blocksの落とし穴 - Qiita

    blocksには数多くの落とし穴があります。 しかしそれを乗り越えることができれば、非常にスマートにかける状況はそれなりに増えると思います。 ※注意:ここではARC環境での話です。一部MRCと状況が異なる場合があるかもしれません。 <blocksはObjective-cのオブジェクトをstrong参照でキャプチャする> ここでいうキャプチャとは、ポインタをコピーしている、ということです。 なんで?と思われる方も多いと思います。しかし理由ははっきりしていています。 例えば、dispatch_afterで処理を遅延することを考えてみましょう。 NSArray *sameArray = ...; int64_t delayInSeconds = 2.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSecon

    blocksの落とし穴 - Qiita
  • CrossBridge » ImageOptimを使ってPNG/JPEG/GIF画像のファイルサイズを小さくする

    3G回線を使用した時のAppStoreからのダウンロード制限が50MBに緩和されたとはいえ、アプリのサイズは小さくしたいものです。 RetinaディスプレイのiPadの登場でさらにアプリのサイズは膨らむ方向に・・・ そこで今回はオープンソースのImageOptimというMac用のアプリケーションを紹介します。このImageOptimはPNG画像、JPEG画像、GIFアニメーションファイルを最適化/圧縮することでファイルサイズを小さくするアプリケーションです。 使い方も最適化/圧縮したいファイルをドラッグ&ドロップするだけとお手軽です。それでは続きでダウンロードサイト、使い方を説明します。 ダウンロード こちらのサイトからダウンロードします。ページの右側にダウンロードと書かれたボタンがあるので押してダウンロードします。ファイルは圧縮されているので解凍して、アプリケーションフォルダにコピーして

  • Objective-CのBlocksの循環参照に関する僕なりのベストプラクティス

    「Objective-CのBlocksの循環参照とその解決策」では、Blocksのメモリ管理の難しさと、世間ではよく使われている「weakSelfパターン」があまり良くないのではないかということを書きました。 このブログでは、いろいろ考えた結果たどりついた、僕が考えるBlocksの使い方を書きたいと思います。 サンプルをgithubに載せましたので、良ければそちらも参照してください。( BlocksMemoryExample ) Blocksを安全で便利に使うために必要なこと 先に、Blocksを安全で便利に使うためには、どんなことが必要なのかというのを考えておきたいと思います。 循環参照におちいらず、使用後に解放される。 使い手が内部の実装をできるだけ意識する必要がない。 おまじない的なコードを書く必要がない。 できるだけBlocksに渡すオブジェクトの存在を保証する。 そして、Bloc

    Objective-CのBlocksの循環参照に関する僕なりのベストプラクティス
  • Objective-CのBlocksの循環参照とその解決策

    半年までは、Objective-Cでコールバックの処理は、delegateを使って実装していました。しかし、delegateによるコールバックは処理の繋がりが分かりにくいというデメリットがあります。 これは皆さん感じるところだと思いますが、実際に最近のObjective-C開発は、Blocksを使って記述するのがトレンドだと思います。 ただ、メモリ管理に関して少し注意しなければならない点があるので、検証結果も合わせて記していきたいと思います。(少し長くなるので2回にわけて書きたいと思います。) Blocksで処理を行う これは簡単なサンプルです。BlocksRunnerクラスは、Blocksで渡された処理を保持し、runメソッドが呼ばれた時にその処理を実行します。 int main(int argc, const char * argv[]) { @autoreleasepool { Bl

    Objective-CのBlocksの循環参照とその解決策
  • はてなブログでSyntaxHighlighterでObjective-Cを表示 - MD Blog

    SyntaxHighlighter からダウンロードしたフォルダ中の shCore.js と shCoreDefault.css 、そしてここの shBrushObjectiveC.js を導入すればいけるみたいですが、少しハマったのでうまくいったやりかたを書き残しておきます。 Step 1 shCoreDefault.css の追加 ・SyntaxHighlighter からzipをダウンロード ・解答したフォルダの styles > shCoreDefault.css を開いて全文コピー ・はてなブログの設定の デザイン > カスタマイズ > スタイルシートにペースト Step 2 shCore.js の追加 ・<script>で囲ってコピペではうまく動かなかったのでホスティングを利用。AWSを使っているようなので誰か寄付してあげてください。 ・はてなブログのデザインカスタマイズからス

    はてなブログでSyntaxHighlighterでObjective-Cを表示 - MD Blog
  • objective-cでBlocksを使う~よくわからないクロージャーとか無名関数とか~ – 因果日記+

    豆腐VSこんにゃくという夏コミ向けの作品を作ってる時に思ったのですが、シューティングゲームでは匿名メソッドとかCommandパターンとかやたら使うよな?俺だけ? 匿名メソッドとか匿名クラスとかラムダ式とかdelegate文とかBlocksとかクロージャーとか関数ポインタとか無名関数とかプロシージャとか色々まとめてここでは「動作をオブジェクト化する手法」についてちょっくら説明してみます。言語によって、似たような手法を実現するための方法が違うので、ここでは代表して「関数オブジェクト」と呼ぶことにします。要はメソッドという手続きを変数に代入できたら便利じゃね? 例えば、シューティングで「敵がたまにぶつかったらHPを減らして、HPが0以下になったら的に応じた撃ち返し弾を発生させて・・・」というのを普通に記述するとこんなかんじでしょうか。 [java] class Enemy{ void hit()

    objective-cでBlocksを使う~よくわからないクロージャーとか無名関数とか~ – 因果日記+
  • push通知の取得方法の3通り&バッジとノティフケーションの消し方 | iphoneアプリ開発のノートを公開しています

    push通知でdeviceTokenを登録してサーバーに送れば、アプリ側の開発は一段落します。 というのもdevicetokenさえわかればサーバーからその端末のそのアプリまでデータを送信する事は可能です。 で、そのあと取得に際して、気をつけなくてはならない事があります。 アプリが起動している状態か?アプリがバックグラウンドにいる状態か?アプリは停止している状態か? でふるまいが異なります。 ※appdelegateに記載する前提ですすめます アプリが起動している状態、もしくはバックグラウンドにいる状態では - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { NSLog(@"サーバーから届いている中身一覧: %@",[userInfo

    push通知の取得方法の3通り&バッジとノティフケーションの消し方 | iphoneアプリ開発のノートを公開しています
  • BlockからSelector(メソッド)を作る - Qiita

    そんなに使い所はなさそうだけど。 performSelector メソッドのように、SEL 型のオブジェクトを引数に指定しないといけない場合、メソッドは予め用意しておく必要がある。

    BlockからSelector(メソッド)を作る - Qiita
  • Objective-Cの非同期的な処理、方法のまとめ - Qiita

    delegateやprotocolの勉強をしたいという人がいるので、なるべくわかりやすくここに書いておこう。propertyとか、delegateっていうのはObjective-Cで楽しいところでもある。 でも、delegateだけじゃなくて、他にもいろいろ非同期的な処理をやる方法あるんで、それも、まとめて説明する。 適当に思いつくだけ書くと、非同期的な処理をするために、Objective-Cでは以下のようなやり方がある。他にもあるかもしれないが、だいたいこれだけある。そして、どれを使ってもいい。 Objective-C、C/C++でも可能 ・関数のアドレスを保持しておいてコールバックする。 ・pthread条件変数を使う。(デッドロックやスレッド管理) ・非ブロッキングI/Oする。(データの検査コスト大、結局カーネル空間からユーザ空間に必要なデータをコピーするときにブロックされる) ・シ

    Objective-Cの非同期的な処理、方法のまとめ - Qiita
  • Blocksとdelegateの基本 - Qiita

    @adachi_cです。 今日はBlocksとdelegateのわりと基的な話をしようと思います。まず、言いたいこと。 delegateで書いていたところをBlocksで書くことで、だいたいコードの量が減るのでできるだけdelegateやめましょう。 @propertyも減らしましょう。後任の人ができたときに見づらくてもうかなわないのでこれは私からお願いです。あと、dispatch_async+@propertyでカジュアルな書き換え/参照の合わせ技もやめて欲しい感じですね。 モデルでシングルトンで書けるところはもうシングルトンでお願いします。UIの更新もBlocksでいいのでは。 とりあえず、このへんのことをスッキリやれるのがBlocksとGCDなんで、その辺のことに2日アドベントカレンダーをいただいて、皆さんに説明できたらいいなと。 たとえば、キーパッドのビューコントローラがあって、

    Blocksとdelegateの基本 - Qiita
  • Cocoaの日々: 10分でおぼえるBlocksの書き方

    iOS/iPhone/iPad/MacOSX プログラミング, Objective-C, Cocoaなど Blocksが使えるようになってはや数年。未だに書式が覚えられないわたし(あなた)の為に書き方をまとめてみた。 基型 戻り値 (^名前) (引数)(私が勝手に決めた)基型はこれ。これを覚えないことには始まらない。とにかくこれだけは覚える。 戻り値と引数は一般的なCの関数の書き方と同じなので、名前の書き方だけ (^名前) になったと覚えるのがいい。 (例)BOOL (^completion)(BOOL canceled) = ...;この基型を元に各場面でどう使うかを見ていく。 変数宣言・typedef宣言 変数宣言なら 戻り値 (^名前) (引数) = …;typedef宣言なら typedef 戻り値 (^名前) (引数);両方とも基型がそのまま使える。 (例)type

    Cocoaの日々: 10分でおぼえるBlocksの書き方