Simple gadget life programming diary

Simple gadget life の中の人によるプログラミングメモ

デバッグ時のみ有効となるようにNSLogをマクロ化して使う

デバッグ時にNSLogを使って動作確認するが、本番モジュールでは無効化したい。
そのため、マクロを用いて別関数名で定義する。

//ヘッダーimport文の下あたりに定義
#if DEBUG
#define MyLog(fmt,...) NSLog((fmt),(__VA_ARGS__))
#else
#define MyLog(fmt,...)
#endif

上記の場合、

int a = 10;
MyLog(@"a=%d",a);

のように何かしら引数が1つは必要となる。
この場合

MyLog(@"test");

といった単純に引数を伴わない出力ができない。そのような場合は以下とする。

//ヘッダーimport文の下あたりに定義
#if DEBUG
#define MyLog(...) NSLog(__VA_ARGS__)
#else
#define MyLog(...)
#endif

これで出力されるようになる。

追記
*-Prefix.pchという場所に書くとどのソースからでも参照できるので便利だそうな。
NSLog デバッグ用の各種ログマクロまとめ

Objective-Cのプロトコルの宣言と定義について。

ネット上で各種サンプルをみていると、宣言時と定義が同じタイミングで行われており、戻り値の定義でvoid以外が使えなかったり、引数にNSArrayや独自クラスなどが使えなかったりしていた。
どうすれば使えるかという事についてメモ。

//ヘッダーファイル
#import <Foundation/Foundation.h>
@protocol testObjectDelegate; //この部分ではプロトコルの宣言だけで終了。

@interface testObject : NSObject

@property (nonatomic,retain) id delegate;

-(void)buttonPushed;

@end

@protocol testObjectDelegate <NSObject> //ここにプロトコルの定義を記載。

- (void)delegateMethod:(testObject*)testobject; //自分を引数としてデリゲートの利用先へ送る事が出来る。

@end

デリゲートの宣言はクラスのヘッダーファイルの先頭で、デリゲート定義はクラスのinterface定義後に定義。これで使えるようになる。

XCTestによるユニットテストにおけるテストメソッドの書き方

必ずメソッドの最初の文字は"test"とすること。
ex.testExample
こう書かないと反映されない。

マニュアルは現在存在しない?
古いものならあるっぽい。→ Xcodeユニットテスト ガイド
上記のマニュアルではユニットテスト結果マクロの書き方が"STxxxxx"となっているが、XCTestではSTの部分をXCTに置き換えると動く。
ex.XCTAssertTrue

Wordpressのソースをgitで管理するための準備

どういう管理が理想か?

pull requestという開発フローがトレンド
masterでごちゃごちゃ修正は行わない。綺麗な修正履歴を残す事を目的にmasterから派生させたブランチを作り、そこでmasterにマージできるまで開発を続ける。

ステージング環境を用意し、そこで十分に試してから派生ブランチにマージ、最終的にmasterにマージ。masterにマージされたら、自動で本番環境にデプロイされるようにしたい。
githubならできるけど、プライベートリポジトリを十分に活かしきるほど手を加える事はないだろう。

参考サイト
WordpressをGitで管理する - Tatsuquito

WordPress+Git運用ブランチパターン | カクニンプラスのweb日誌

CocoaPods使用時にバージョン指定を誤りインストールできなかったのでメモ

podfileの記載

platform :iOS

だけだとデフォルトのiOS 4.3向けと認識される。

iOS7をターゲットとしているのならば、

platform :ios, '7.0'

と記載すること。

開発レシピ:Objective-Cのライブラリ管理ツール CocoaPodsさんに記法がキレイにまとめられている。

CocoaPodsの導入で参考になったサイト

CocoaPodsとは

ライブラリ管理ツール。Rubyのgem、Linuxのyumみたいなもの。

参考になったサイト

いろいろ見て回ったけど、これが個人的にわかりやすかった。 Objective-C - CocoaPodsでPodの利用&作成のメモ - Qiita [キータ]

導入後の注意点

XCode起動時に選択する時、プロジェクト名.xcworkspaceというファイルを選択すること。

gtm-oauth2を使ってinstagramのアクセストークンを取得する。

このサイトが分かりやすい

How to Use OAuth 2.0 with KinveyKit iOS Tutorial | Kinvey

注意点

ダイレクトサイトを入力する際、最後にスラッシュを入れる事。
○:http://goes-nowhere-does-nothing/
×:http://goes-nowhere-does-nothing

スラッシュを入れないとgtm-oauth2がリダイレクトをキャンセルしてくれない。

Twitterでoauth2接続することは可能か?

いろいろ調べたりやってみたりしたが、結局出来なかった。
各種URL(正しいのか不明)
tokenURL : https://api.twitter.com/oauth2/token
authorizationURL : https://api.twitter.com/oauth2/authorize

また、リダイレクトサイトはTwitterの場合、実在しないサイト登録不可の模様。 正しいサイトでも試してみたが結局エラーとなりアクセストークンを取得できなかった。