ぴよログ

↓に移転したのでこっちは更新されません、多分。

Xcode

AFHTTPSessionManagerでHTTPBodyを設定する

AFNetworkingのAFHTTPSessionManagerを使っていてBodyに素のXMLを入れてPOSTしたかったのだが、そのやり方がなかなか見当たらずソースコードを読んで解決したのでメモしておく。 ざっくり言うとAFHTTPSessionManagerでのPOSTはこんな感じに行う。 let manage…

【追記あり】デフォルトアプリケーションがXcode-betaになってしまったのを戻した

XCodeのベータ版を入れたらxcodeprojなどを開くときのデフォルトアプリケーションがベータ版のほうになってしまった。いやいや君普段はそんなに使わないから。 僕はターミナルでそのプロジェクトのGitディレクトリに移動して、そこからopen hogehoge.xcodepr…

XcodeでC言語のメモリリークを検出

久しぶりにmallocするプログラムを書いているのでメモリリークが怖い。そこでXcodeのInstrumentsによるメモリリークの検出が本当にできるかどうかを簡単な例で試しておくことにした。これでいざというときに使える。 まず普通に構造体を定義する。 /* Sample…

Xcodeでファイルごとにインデント設定を変える

Objective-Cで書くときはインデント幅4を使うんだけど、CとかC++をXcodeで書くときはやっぱり幅2でインデントしたい。Xcode全体の設定を変更してしまうといちいち面倒だし、Objective-C、C++両方のソースが混在しているときどうするのって問題も発生する。 …

SwiftからObjective-Cを呼ぶ方法。CocoaPodsも。

SwiftとObjective-Cは相互に呼び合えるらしい。Objective-CからSwiftはすでに記事があった。 SwiftのコードをObjective-Cから呼んでみた - Qiita もしSwiftからObjective-Cのコードを呼べるのであれば、大抵のCocoaPodsライブラリは使い回せることになるので…

Xcode 6 beta 入れた #wwdc #swift #xcode

公開されたbeta版をインストールして触ってみた。WWDCの基調講演は見ていないし、ちゃんとしたドキュメントも読んでおらず、Swiftってのが使えるようになるんだー程度の認識しかない状態で触ってみて気づいたことを書いていく。 playground 起動するといきな…

Objective-Cで非同期処理のテスト(依存ライブラリなし版)

Xcode標準のテストライブラリがうまいことやってくれないせいで、非同期処理のテストを書く場合に待ちの処理を自分で書いてあげないといけません。 最近のすごくいい感じの拡張が紹介されたのでこれを使うとなかなかいい感じです。 Objective-Cで非同期処理…

XcodeのstoryboardからUI部品にプロパティを与える方法

Storyboard上に配置しているUI部品のプロパティを、Storyboard上から設定することができるということを最近知りました。これってみんな知ってるんですかね? 独自のボタンクラス サンプルとして角丸半径や輪郭線の幅を外部から設定できるUIButtonのサブクラ…

KFCocoaPodsPluginの検索機能にGitHubのスター数を出す

以前、XcodeからPodの追加や検索ができるKFCocoaPodsPluginがかなり便利という記事と検索したPodを選ぶ際にGitHubのスター数を参考にするという記事を書きました。 CocoaPods用Xcodeプラグインがかなり便利 - PILOG CocoaPodsの比較にGitHubのスター数を用い…

Objective-CでBuilderパターン

Builderパターンてのは、生成が面倒なオブジェクトの生成をいい感じにするデザインパターンです。Objective-Cではブロックを使っていい感じにできるみたいですね。 例えば特定日時のNSDateを生成するには次のようなコードを書くことになります。そこそこ煩雑…

Xcodeでコードのあいまい補完(キャメルケース補完)

iOSのSDKはAPIの名前が長いのでXcodeによるコード補完がほぼ必須ですが、微妙にタイポったときに補完が効かなかったりして使い勝手がそんなによくありませんでした。 ところで、XcodeにはいっているOpen Quicklyの機能(Command+Shift+o)はキャメルケースに…

Xcode用プラグインマネージャー「Alcatraz」

「Alcatraz」というXcode用のプラグインマネージャーを発見しました。 supermarin/Alcatraz READMEにあるように以下のコマンドでインストール可能です。インストール後はXcodeを再起動。 curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scri…

CocoaPodsの比較にGitHubのスター数を用いる

iOS開発で使えそうなコントールを探すのにKFCocoaPodsPluginが便利でした。 CocoaPods用Xcodeプラグインがかなり便利 - PILOG ところでこの検索ダイアログを使うと該当するPodがたくさん見つかって一体何を使っていいのかわからなくなるという事態が起こりま…

CocoaPods用Xcodeプラグインがかなり便利

いきなり余談ですが、あとで試そうと思った拡張機能って大体試さないですよね。Xcodeプラグインのまとめページ見てはてブしようとしたら3ヶ月以上前にはてブしてたりして。。 iOSアプリ開発が捗るXcodeプラグイン - Qiita こりゃもったいないということで一…

xcodebuildコマンドで便利になるケース

ようやくコマンドラインからのビルドがわかったので使えそうケースを考えてみました。 CIで使う これ王道ね。ほとんどの人がこのためにやってると思います。JenkinsやTravisCIなどでpushするたびにテストさせるにはコマンドラインからテストできないといけま…

xcodebuildまとめ

先日xctoolについて書きました。 (少し追記)Xcodeのプロジェクトをコマンドラインからビルド・テストする - PILOG ところが、xcodebuildそのもの自体もいい感じになってきていてxctoolとの違いはなくなって来ているようです。Xcodeのコマンドラインビルド…

ipa書き出しをxcodebuildとxcrunで自動化する

昨日紹介したxctoolはxcodebuildというコマンドを便利にラップしてくれるのですが、ipa書き出しまでは行ってくれないらしい(伝聞)です。xcodebuildとxcrunを使えばコマンドラインから実行できるそうなのでやってみました。 というか、ほぼここに書いてある…

(少し追記)Xcodeのプロジェクトをコマンドラインからビルド・テストする

前々からXcodeのプロジェクトをコマンドラインからビルドしたりテストを実行したりしたいなーと思っていたのですが、以前調べたときにお手軽な情報が見つからなくて諦めていました。調べたりなかっただけだとは思うのですが。 (追記:Xcode5でxcodebuildが…

KIFを使ったスクリーンショットの自動撮影

昨日書いたの記事では、Objective-Cのコードを用いてスクリーンショットを撮影する方法を紹介しました。 iPhoneアプリの画面をObjective-Cでキャプチャ - PILOG 今日はそのTipsを用いて各画面のスクリーンショットを自動的に撮る方法を紹介します。 スクリー…

iPhoneアプリの画面をObjective-Cでキャプチャ

コードからでもスクリーンショット風の画像を得ることができます。ステータスバーはUIApplicationのwindow外なのか、画像の中には含まれません。 CGContextを新たに作成し、アプリケーション内のWindowsの内容をそのコンテキストに描画していくという感じで…

__bridgeキャスト

C++をある程度知っているというものあってObjective-Cの言語的なところはほぼスキップしてiOSの開発をしているという側面が僕にはあります。 で、Xcodeの警告でたまに出てくる__bridgeキャストってなんじゃいなと思いながらもIDEに任せて直してもらっていた…

NSLogデバッグのときに便利なCGRect→NSStringの変換

NSLogデバッグの良し悪しは置いておくとして、CGRectとかNSDictionaryとかの値をちょっと確認するのにNSLog使ったりしますよね。CGRectの値を確認するときに一生懸命NSLog("%f", rect.size.width)みたいにやってたりマクロ書いたりしていたんですが、もっと…

iOSで上へ引っ張って更新させるライブラリ

Twitterのアプリなどが採用していた引っ張って更新するためのコントロールは、UIRefreshControlとしてiOS6からiOS SDKに正式採用されています。ところが、このUIRefreshControlは下へ引っ張って更新するのには対応していますが、上へ引っ張って更新するのに…

iOS用のYouTubeの動画IDを渡すと再生してくれる便利なやつ

YouTubeのAPIで取ってきた情報を何やら使うシリーズ。今日はIDを元に再生を行います。 動画再生系はいくつかのブログポストでやり方を見かけるのですが、YouTubeを再生するとなるとembed用HTMLを埋め込んだWebViewを使うっていう方法ばかり見つかって少し困…

入れ子になったNSDictionaryのデータを取り出す

何重にも入れ子になったNSDictionaryのデータをチマチマ取り出すのは超絶めんどくさいです。valueForKeyで取り出したNSDictionaryにさらにvalueForKeyして、さらに、、なんてやるともうやってられません。 幸いvalueForKeyPathというメソッドで少し簡単にで…

iOSで日時の相対表記

1 week agoみたいな日付の相対表記をiOSでやりたいので探しました。そしたらCocoaPods対応のライブラリがありました。 kevinlawler/NSDate-TimeAgo これです。カテゴリでNSDateを拡張してくれてあります。 インストール 普通のCocoaPods。 # in Podfile pod …

Xcode:シミュレータなしでViewをプレビューする

Xcodeにはstoryboardを使って作り上げたViewをプレビューする機能があります。これを使うと、画面回転時、4インチと3.5インチの切替時、iOS7とそれ以前の切替時、それぞれのレイアウトを確かめることができます。 AutoLayoutでConstraintを付けた結果がどう…

Xcode5でのiOSアプリの起動イメージ設定方法と注意点

最近のiOS開発者の方にとっては当たり前の話かもしれませんが、起動画面の画像が変わっていない現象に出くわしたので残しておきます。 そもそもどうやって設定するのか? まず起動用画像用意します。今回は3.5インチ、4インチのRetina用を用意。特にXcodeプ…

DashとXcodeで一発リファレンス検索

先日AlfredとDashで一瞬でリファレンス検索する方法について書きました。 Alfred+Dashで秒速リファレンス検索 - PILOG 今度はXcodeから一発検索する方法を紹介します。 Dash Plugin for Xcode このプラグインを導入します。 omz/Dash-Plugin-for-Xcode イン…

ペア要素をキーにしたNSDictionary

NSDictionaryで複数要素をキーにしようというお話です。 普通の連想配列はキーとバリューで1つの組み合わせになりますが、片方が◯でもう片方が☆のときはこの値みたいなケースの場合は最初から用意されているデータ型では間に合わないことが多いです。 C++で…