Mac の Git で日本語ファイル名を扱う

今まで何年もSVNで管理されてきたプロジェクトをGitに以降しようとすると、MacのGit上で日本語のファイル名のものが差分として表示され困った。
ググったら解決。以下の設定が必要みたい。

一度クローンしたものは削除して、再度リモートからクローンすることで日本語ファイル名のものが差分として表示されないことを確認しました。

Pocket

NSNotificationCenterの使い方

iOSアプリのさまざま状態を監視して、マッチしたときに通知できる「NSNotificationCenter」。
わざわざdelegateメソッドを使わなくてもいいから便利です。

よく使うのは以下の監視状態。

  • UIApplicationDidFinishLaunchingNotification : アプリケーションが起動した直後
  • UIApplicationWillEnterForegroundNotification : アプリケーションがアクティブになる直前
  • UIApplicationDidBecomeActiveNotification : アプリケーションがアクティブになった時
  • UIApplicationDidEnterBackgroundNotification : アプリケーションがバックグラウンドに入る時
  • UIApplicationWillResignActiveNotification : アプリケーションがアクティブじゃなくなる直前
  • UIApplicationWillChangeStatusBarFrameNotification : ステータスバーのサイズ変更される直前
  • UIApplicationDidChangeStatusBarFrameNotification : ステータスバーのサイズ変更が発生した時
  • UIApplicationWillChangeStatusBarOrientationNotification : デバイスの向きが変わる直前
  • UIApplicationDidChangeStatusBarOrientationNotification : デバイスの向きが変わった時
  • UIApplicationDidReceiveMemoryWarningNotification : メモリ不足の警告発生時
  • UIApplicationWillTerminateNotification : アプリケーションが終了される直前

こんな感じでviewDidLoadあたりに書きましょう。

NSNotificationCenterに登録したら、監視を外す処理も忘れずに。
忘れちゃうと、selectorに設定したメソッドが複数回呼ばれたりします。

Pocket

addSubViewしたviewを最前面・最背面に移動する

最前面に移動する

再背面に移動する

Pocket

あるUIViewがすでにaddSubViewされているか判定したい

あるUIViewがすでにsuperViewにaddSubViewされていた場合に、これ以上addSubViewしたくない時は以下の判定文を書けばおk.

Pocket

NSDictionaryの中身をループで取得したい

使うときにはいつも忘れているのでメモ。

keyとvalueが欲しいとき

valueが欲しいとき

Pocket

Objective-Cでfor文中に要素を変更しようとしたらエラー「Collection was mutated while being enumerated.」

列挙子を使ってアクセスしてる時に要素変更しないでねということ。
順番に処理してるのに、要素を削除したりしたら順番狂っちゃうから発生。

調べてみると、reverseObjectEnumeratorを使って逆順に列挙すればokみたい。

Pocket

MacにRMagickをインストールしようとしたらCan’t find MagickWand.h

MacにRMagickをインストールしようとしたら詰まったのでメモ。
ほぼ同じ環境だと思っていた会社のMacにはすんなり入ったのに、自宅のMacでハマってしまった・・・

こんな感じでImageMagickとRMagicのインストールを実行

出たエラーはこちら

調べてみるとPKG_CONFIG_PATHが間違っているとの情報を見つけたので正しくパスを指定する。

それでもエラーがでる!
どこもかしこもこの対応方法しか書いていなくて、だいぶまいっていたところで新しい情報を発見。
Configuring ImageMagick, Rmagick, and Homebrew to play nicely together on OS X Mavericks

この記事の通りに以下を実行して無事インストールが完了しました。。。

Pocket

SDWebImageを使用していたら、アーカイブだけエラー

SDWebImageを使用したiPhoneアプリで、シミュレータ・実機ともに正常に動作するのにアーカイブだけエラーが出るという現象に遭遇。

エラーはこんなの。

調べてみると、if defined(ARM_NEON)という記述をif defined(_ARM_ARCH_7)にしたらいいみたい。
SDWebImageの場合は該当箇所はdsp.hとcpu.cの2箇所。

こうなってるのを。。

こう修正。

Pocket

UITableViewで余分な境界線を非表示にする。

UITableViewで2行だけデータを表示したいとき。
残りのcellには何もデータがないのに、境界線だけ表示されてしまってなんか気持ち悪い。
それを解決するのに一番簡単っぽい実装はこれ。

Pocket

JSONModelで必須でない項目を設定する – Objective-C

例えば、APIの返り値が「id=1, name=foo, address=bar」だった場合で、受け取り側には「id, name, address, age」が設定されていた場合。

みたいなエラーが表示されます。
軽く調べたら、

こうすればokみたいな記事を見つけたけど上手くいかず。。。
結局解決するには以下のメソッドを実装。

Pocket