タグ

ブックマーク / blog.katty.in (5)

  • iOSのFrameworkを簡単に作れるiOS-Universal-Framework

    iOS向けのライブラリを作りたいなと思っていて、Frameworkの作り方を調べていました。 ここでいうFrameworkというのは、Foundation.frameworkとかUIKit.frameworkとかのような、あれです。 iOS用Frameworkの作り方 Xcode4.5.1でiOS用のframeworkを作成する Static Libraryプロジェクトつくる Aggregateターゲット入れる フレームワーク用のInfo.plistつくる Run Scriptにビルドスクリプトを書く ビルドする Framework用のテンプレートはないということで、自分で作るとかなり大変な模様・・・。 テンプレートプロジェクトiOS-Universal-Framework もう少し調べてみると、この面倒な手順をまとめたプロジェクトテンプレートがGitHubで公開されていました。 iOS-

    iOSのFrameworkを簡単に作れるiOS-Universal-Framework
  • 広告業界と無関係な僕がさっぱり理解できないアドテク用語を調べた。

    厳密には無関係ということはないのですが、僕は直接的に広告に関連のある事業をやっているわけではありません。しかし、最近アドテクの世界が面白くて、基的なことから勉強しています。 インターネット広告はテクノロジーのかたまり インターネットはテクノロジーの世界です。そして、この世界でとても大きなお金を生んでいるのが広告です。 今をときめくGoogleもFacebookも広告で収益を上げている企業です。日でも同様にインターネット広告の市場規模はとても巨大で、1兆円程度とのことです。 必然的に、広告という世界には、インターネットの業界のテクノロジーが結集します。だから、技術的にも、とてもおもしろいです。 広告はどこからやってくるのか? 広告とは、これのことですよね。 そもそもは、これがどうして表示されるのか、というを調べていました。調べてみると、裏側にはとんでもない世界が広がっていました。 純広告

    広告業界と無関係な僕がさっぱり理解できないアドテク用語を調べた。
  • Objective-CのBlocksの循環参照に関する僕なりのベストプラクティス

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

    Objective-CのBlocksの循環参照に関する僕なりのベストプラクティス
  • Objective-Cでスレッドをデッドロックさせずに非同期処理の終了を待つ方法。

    「Objective-Cで非同期処理を同期処理にする方法。」に、ディスパッチセマフォによってスレッドがデッドロックしてしまう場合があるということを書きました。 デッドロックする例 これがその例です。 NSLog(@"start."); dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ for (int i = 0; i < 5; i++) { sleep(1); NSLog(@"Process: %d", i); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"Main Process"); }

    Objective-Cでスレッドをデッドロックさせずに非同期処理の終了を待つ方法。
  • Objective-Cで非同期処理を同期処理にする方法。

    同期処理は簡単に非同期処理にできますが、非同期処理は簡単には同期処理にできません。 Objective-Cで、非同期処理を同期的に実行するにはどうしたら良いのかと調べたところ、ディスパッチセマフォを使うのが良いようでした。 セマフォとは信号装置とかいう意味らしいですが、「カウンタ」だと思って良いんじゃないかと思っています。 同期処理の例 まずは通常の同期処理から。 for (int i = 0; i < 5; i++) { sleep(1); NSLog(@"Process: %d", i); } これは、1秒ごとにカウントを表示する処理です。これは当然同期処理です。実行を始めると5秒間はこの先に処理が進めません。 同期処理を非同期処理にする 同期処理を非同期処理にするには、dispatch_asycを用いて、バックグラウンドのスレッドのキューに処理を追加すれば良いです。 dispatch

    Objective-Cで非同期処理を同期処理にする方法。
  • 1