タグ

Developに関するtokoromのブックマーク (372)

  • Build 番号の自動更新スクリプトで Info.plist そのものに書き込まないための考察

    iOS アプリでビルドの度に Build 番号を更新する方法と言えば、PlistBuddy コマンドを使ってプロジェクト内の Info.plist を書き換える方法が一般的に知られています。 その方法については iPhone アプリのビルド番号を自動的に更新する や「」の "12.4.1 ビルド番号を自動で増加させるスクリプトを登録する" の中で触れているので、実装の雰囲気についてはそちらをご覧ください。 ツイッターから届いてきた課題 自分は PlistBuddy を知って以来、ずっとそれだけを使ってきたのですが、先日にふとツイッターから、興味深い情報が舞い込んできました。 agvtoolとBuild Settings/Versioningのお話の発表資料をここにアップします(まだアップロード中) #potatotips https://t.co/0ZzUtWh8Fk — 所 友太 (@t

    Build 番号の自動更新スクリプトで Info.plist そのものに書き込まないための考察
  • Build Configuration毎でinfo.plistの内容を変更する - アルザえもんの手記

    かんばんわ。 アルザです。 info.plistの内容をビルド毎に変更したい場面があったため調査してみました。 今回は「UIFileSharingEnabled (Application supports iTunes file sharing)」のtrue/falseをビルド毎に切り替えてみます。 試してないけど、URLスキーム等の文字列なんかも切り替える事ができると思う。 XcodeのProject設定の Build Setting を眺めていると「Info.plist Preprocessor Prefix File」という項目を発見。 ここにInfo.plist用のヘッダファイルを指定すればInfo.plist内でdefineを使う事ができそうです。 ▼Info.plist Preprocessor Prefix Fileの作成 まずはInfo.plist用のヘッダファイルを作成。

    Build Configuration毎でinfo.plistの内容を変更する - アルザえもんの手記
  • [objective-c][KVC]キー値コーディングについて調べたら面白かった » rt:anote

    キー値コーディング (KVC) とは何か? objective-cはiPhoneが流行りだした頃に少しHowToを写経してみただけで全く手つかずだったのですが、必要に迫られて先月からものすごい周回遅れで勉強しています。とりあえず今のところ、サッパリ良さが分かっていない(笑)が、おそらくその印象の最大の要因はファッション的な問題でしょう。雑感として、良い所は、言語仕様が小さい。その割に動的型付け言語っぽい柔軟さがあるところでしょうか。言い換えると、動的言語っぽい柔軟さがあるから言語仕様が小さくて済んでいるのかもしれない。反面、各種フレームワークの流儀や慣習を押さえないとうまくいかない。また、objective-c自体もそうですがXcodeにしろFoundationにしろ調べれば調べるほど 数年でものすごい変わってしまう ようなので調べた情報が古かったりとキャッチアップするのがしんどい部分も

  • Cocoaのマルチスレッドシステム - $ cat /var/log/shin

    Cocoaのマルチスレッド機構について解剖してみました。 実験環境 MacBook Pro Retina, 13-inch, Late 2013 OS X 10.9.2 (Mavericks) NSThread?時代はGCDでしょ! Cocoaには、GCD(Grand Central Dispatch)という新しい並列処理APIが入り、今はこちらを積極的に使うことが推奨されています。とはいえ、CocoaのベースとなっているのはCocoaスレッド(NSThread)なので、NSThreadとNSRunLoopに関する理解は、Cocoaのプログラミングをする上で必須だと思います。 ということで、この記事ではNSThreadを中心に掘り下げていきます。 NSThreadの基 NSThreadの使い方を簡単に説明すると、適当なクラスに別スレッドで処理するメソッドを用意して、それを適切にinitW

    Cocoaのマルチスレッドシステム - $ cat /var/log/shin
  • facebook/pop を使ってみた - Qiita

    最近 FacebookがOSSとして公開した pop は Paperで使われているアニメーションライブラリです 少し触ってみたので基的な使い方などをまとめてみます この記事はブログでも公開しています pop とは 公式ブログに記事があるのでそちらがとても参考になります Introducing Pop, the animation engine behind Paper iOS や OS X でアニメーションを実装しようとするとCoreAnimationを使うと思うのですが実はCoreAnimationはなかなか使いにくいライブラリだったりします。確かにCABasicAnimationは簡単ですが、Timing Functionをlinear, ease-in, ease-out, ease-in ease-outの四種類と3次ベジェ曲線のいずれかからしか指定することができません。これだと

    facebook/pop を使ってみた - Qiita
    tokorom
    tokorom 2014/05/07
    めも
  • もう怖くないCocoaの並列処理(GCD & NSOperation/NSOperationQueue) - $ cat /var/log/shin

    Cocoaの並列処理(GCDとNSOperation/NSOperationQueue)に関するまとめです。この記事ではいわゆる「スレッド」については扱いません。スレッドについては、前に記事を書いたのでそちらを参照してください。 Cocoaのマルチスレッドシステム - $ cat /var/log/shin スレッドによる並列処理からの脱却 スレッドは、歴史のある並列処理のための概念ですが、OSのカーネルの方にも密接に関わりがあるなど、抽象度は低めと言えます。 そこで、Cocoaでは、並列処理のための抽象度の高いインターフェースが提供されるようになりました。それがGCDとNSOperation/NSOperationQueueです。これらを使えば、スレッドを何個作成してタスクをどのように実行するか等の細かいことは、ランタイム側が全て決定してくれるので、ユーザは、並列処理したいタスクを定義し

    もう怖くないCocoaの並列処理(GCD & NSOperation/NSOperationQueue) - $ cat /var/log/shin
  • ARC で IMP を使う - Qiita

    IMP はこのように返り値が id 型の関数として定義されていまして、オブジェクト以外の値を返す IMP に対しても問答無用で retain してしまい、結果落ちるというわです。 適切にキャストしてやればよいのですが、ただのキャストではだめで __bridge を使って「retain するな」ということを明示しなければなりません。 NSInteger result=(NSInteger)(__bridge void*)imp(self, _cmd); このコードはめでたく落ちないんですけど、返り値が id 型より大きい double や NSRect なんかだとこういう風にキャストできない。 じゃあどうすればいいか。受け取った id の型をキャストするのではなく、関数定義そのものをキャストしてしまおうというのが今回のポイントです。

    ARC で IMP を使う - Qiita
    tokorom
    tokorom 2014/05/05
    めも
  • Objective-Cで非同期処理のテスト(依存ライブラリなし版) - ぴよログ

    Xcode標準のテストライブラリがうまいことやってくれないせいで、非同期処理のテストを書く場合に待ちの処理を自分で書いてあげないといけません。 最近のすごくいい感じの拡張が紹介されたのでこれを使うとなかなかいい感じです。 Objective-Cで非同期処理のテストをシンプルに書く方法 - TOKOROM BLOG ですが、実際はそこまでやらなくてもSDK標準の機能だけでも簡単に実装できます。サンプルコードは以下の通り。 - (void)testExample { CFRunLoopRef rl = CFRunLoopGetCurrent(); NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://xoyip.hatenablog.com/"]]; NSOperationQueue *qu

    Objective-Cで非同期処理のテスト(依存ライブラリなし版) - ぴよログ
  • http://blog.shoguniphicus.com/2011/05/keyframe-animation-ios.html

  • facebookの"Building Paper"はすべてのiOSエンジニアが見るべき

    huin Job : Software Engineer(iOS, Android) Use : Objective-C, Swift, Java Like : Gadget, Apple, Photography, Art, Design, UI, UX More posts by huin. 日のAppStoreでは未だ公開されていないfacebookの「Paper」ですが、 そのUIは実験的ながらも非常に高い完成度で個人的にはすごく好きなアプリです。 良いアプリがあれば "どうやって作っているのか" が気になるのがイチiOSエンジニアの性なんですが、facebook自体がPaperの裏側について説明した動画をしていて、非常に良い内容だったので紹介します。 なんのイベントなのかはよくわかってないのですが、 公開日は4/18なので比較的最近だと思います。 当然英語なので理解は浅いのです

    facebookの"Building Paper"はすべてのiOSエンジニアが見るべき
  • [iOS]UITableView,UICollectionViewでドラッグ&ドロップする | DevelopersIO

    配列モデルの順序をドラッグで変更 iOSでは静的な配列モデルの表現機能だけではなく、モデルの順序を動的に実行時に動かすようにするための仕組みが搭載されており、ユーザーの操作に合わせて配列の順序を入れ替えるように制御することができます。 UIKitの標準的なコンポーネントUITableViewではモデルの順序を変更する機能は備わっていますが、順序変更の際の挙動として、ドラッグ領域が限られていたり、アイコンが表示されるなどあまり使い勝手の良い物ではありません。 また、UICollectionViewには編集モードが搭載されておらず、標準的なやり方ではドラッグ&ドロップを実装する為に労力が必要です。 そこで記事では動的に順序を変更するという操作に絞ってドラッグによる順序変更の補助となるOSSを紹介します。 今回例として取り上げるソースの入ったサンプルプロジェクトGithubに上がっています。

    [iOS]UITableView,UICollectionViewでドラッグ&ドロップする | DevelopersIO
  • クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

    http://tomoyaonishi.hatenablog.jp/entry/2014/07/01/メソッド、クラス、変数、定数宣言時に使えそうRead less

    クラス・メソッド・定数・変数宣言時に使えそうなものまとめ
  • Q. StoryboardとXIBはどう使い分ければいいんだろうか? - Qiita

    storyboardについて調べていたところ、StoryboardLintの作者の考えが興味深かったので該当のstackoverflowのエントリを抄訳した。訳はニュアンスが伝わればいいくらいの適当さです。 When to use Storyboard and when to use XIBs どういうときにstoryboardを使って、どういうときにXIBを使えばいいか、何かガイドラインはあるかな。それぞれの長所と短所はなんだろう。どういう状況でそれぞれを使えばいいんだろう。 動的にUI要素を組み立てる場合にstoryboardを使えないってのは知ってるんだけど。 (Asked by affian at 2012/2/22) Answer by henning77 at 2012/3/1 ぼくはXIBを使い込んだし、storyboardを使ったプロジェクトを二つ完成させたことがある。そこ

    Q. StoryboardとXIBはどう使い分ければいいんだろうか? - Qiita
    tokorom
    tokorom 2014/04/14
    めも
  • 第5回、第6回 #potatotips で勉強になったことのまとめ - その後のその後

    例のごとく、『第5回 #potatotips』『第6回 #potatotips』について @hirama2 さんの記事を読んでキャッチアップさせていただきました。 第5回 #potatotips で発表された12個のiOSのtipsをまとめる - Think Big Act Local 第6回はUIEvolution開催! #potatotips で発表されたiOSのtipsまとめ - Think Big Act Local で、ちまちまメモとして勉強になったことをツイートしてたのですが、わりとふぁぼられ率が高いので、ニーズあるかもしれないのでこちらにまとめておきます。 『え!?Storyboard使ってるのにそんな画面遷移のしかたしてるのですか!?』 ViewControllerを疎結合にしておくための、値の受け渡し方の提案、およびそれを実現するための TKRIntent の話 by @

    第5回、第6回 #potatotips で勉強になったことのまとめ - その後のその後
    tokorom
    tokorom 2014/04/12
    ポテチまとめ記事 #potatotips
  • NSArrayやNSDictionaryからNSNullを効率よく取り除く - 24/7 twenty-four seven

    iOSアプリケーションでWeb APIから返ってきたJSONを処理するのにNSNullの扱いに困っていて、事前にNSNullを取り除いてしまうのが事故を防ぐための確実な方法なのですが、再帰的にすべての要素を検査する以外になにかいい方法がないかと思って考えていたらちょっとおもしろい方法を思いついたので書いてみました。 kishikawakatsumi/CollectionUtils · GitHub ↑ に含まれるCUCompactArrayとCUCompactDictionaryです。 NSArrayとNSDictionaryのサブクラスとして実装されていて、次のようにして生成します。 (普通にalloc/initを使って生成することも可能です) NSArray *array = @[@"0", @"1", [NSNull null], @"2", [NSNull null], @"3"]

    NSArrayやNSDictionaryからNSNullを効率よく取り除く - 24/7 twenty-four seven
    tokorom
    tokorom 2014/04/10
    きしかわさんのNSNull対策、実際にアクセスされたタイミングで処置するというのいいですね
  • Injection for Xcode を使って見た

    桜の季節ですね、happy_ryo です。 今日は新入社員の入社式がありました。 ということで、 Injection for Xcode を使って見たので紹介したいと思います。 Injection for Xcode って何よ? Xcode の plugin の一種で、iOS Simulator で実行しているアプリケーションに、ソースコード上での変更をリビルド無しに反映させることが出来る物です。どのように実現しているか?等は公式ページをご覧下さい(http://www.injectionforxcode.com/) AppCode にも plugin が用意されているので、AppCode 派のぼくでも安心して利用することができます。基的な使い方は、Xcode でも AppCode でも変わりないので、今回は珍しく Xcode を元に紹介します。 インストール 公式ページ(http://

  • 実行ループとdispatch_sourceの話。 - なるようになるかも

    いまやiOSのネットワーク処理といえばAFNetworkingな感じです。 しかし古いストリーミングAPIを使った経験があれば、ブロックベースのAPIでどうやってネットワーク通信を行っているのか疑問に思うはずです。なぜかというと、 GCDは実行ループを持てない からです。 そもそも実行ループとは何なのでしょう。 実行ループとは NSRunLoop Class Referenceより The NSRunLoop class declares the programmatic interface to objects that manage input sources. An NSRunLoop object processes input for sources such as mouse and keyboard events from the window system, NSPort

    実行ループとdispatch_sourceの話。 - なるようになるかも
    tokorom
    tokorom 2014/04/06
    めも
  • AppleのCore Animationプログラミングガイドを読んだメモ - Qiita

    Appleが提供しているプログラミングガイドは全部読んだほうがいいなーと思っています。 目下、興味のあるところから順次読み込み中。 今回は[PDF] Core Animationプログラミングガイドを読んだので、覚えておいたほうがいいところとかをピックアップし、自分なりの考察なんかを加えて書いています。 UIView/CALayerの基構造 画面になにかを表示しようとした時、使うのはUIViewかそのサブクラスを使うのが通常です。 addSubview:メソッドなど使って階層構造を成して構築していきますね。 普通はUIViewを使えば問題ありませんが、描画のパフォーマンスやちょっとした細かい演出などをしたい場合はCALayerを利用します。 やはりどういう構造になって画面に表示されているか、を知るのは大事なことですね。 UIViewは通常、レンダリング周りを担当するCALayerクラスを

    AppleのCore Animationプログラミングガイドを読んだメモ - Qiita
  • Objective-Cの列挙の話。 - なるようになるかも

    Objective-C - NSArrayでfor(; ;)とかfor-inを使うのをやめて、enumerateObjectsUsingBlock:を使う - Qiita とか Objective-Cのいろいろな反復処理 - koogawa blog とかで列挙の話を見たので。 最も高速な列挙の方法 最初に結論を書いておくと、Objective-Cにおいて最も高速な列挙の方法は、Objective-Cを投げ捨ててC言語で記述することです。 NSArrayやNSDictionaryは ランタイム関数の呼び出しがボトルネック になります。 文字列を列挙するだけならNSStringのNSArrayよりも、char*の配列を扱ったほうが圧倒的に早いです。 NSEnumerator Objective-C 1.0から存在するプロトコルで、基的な列挙方法です。 objectEnumeratorで列挙

    Objective-Cの列挙の話。 - なるようになるかも
  • CocoaPodsがちょっとだけ便利になるtips

    プログラミング (iOS, JavaScript, Jenkins, Sikuli) とMaciPhoneなどの話題が中心のブログ CocoaPodsを使うときに、知っておくとちょっとだけ便利になるコマンドラインオプションなんかをtipsとしてまとめてみました。 対象パッケージのデモプロジェクトをインストールする pod try <パッケージ名> CocoaPods 0.29.0からの新機能です。試したいパッケージで次のようにします。 取得して、Xcodeまで開いてくれるので、人によっては大きなお世話かも。 利用例 $ pod try Colours Updating spec repositories Trying Colours Opening '/tmp/CocoaPods/Try/Colours/ColoursDemo/ColoursDemo.xcodeproj' パッケージ検索

    CocoaPodsがちょっとだけ便利になるtips