iOS
instrumentsのプロファイラなどを使ってCall Treeを表示しても、メソッド名が表示されなくてどのメソッドで時間がかかっているのかわからん・・・という場合。 以下手順でメソッド名を表示出来る。 ・instrumentsをStop ・メニューのFile>Re-Symbolicate Doc…
以下を使うと簡単にできる。 UIEdgeInsetsFromString(string)UIの設定をファイルから読み込む時とか使えそう。
以下のコードで簡単にできる。 CGRect newRect = UIEdgeInsetsInsetRect(rect, insets);これは便利。
実機のログをOrganizerで見ていると、以下のようなファイルにクラッシュレポートを保存したよというメッセージが出ることがある。 /var/mobile/Library/Logs/CrashReporter/###.plistこれはiOSデバイスの以下の画面から見られる。 設定>一般>情報>診断/使…
pod lib createでPodライブラリ用プロジェクトのひな形が出来るらしい。知らなかった。参考:Objective-C - iOS向けのライブラリをCocoaPodsで配布する - Qiita
iOS5でアプリを起動し、XIBを読み込んだところで「CRASH: The NIB data is invalid. 」 というエラーが出た。 iOS6,7では問題なし。 原因はXIBファイルがおかしかったことっぽい。 XCode4で作ったXIBをXCode5形式に変換した時に壊れたんだろうか。 でも、iOS…
NSNumberFormatterのstringFromNumberを使うと、渡したnumberがnilでもnilSymbolが返されない。 nilSymbolを返すようにするためにはstringForObjectValueを使う。 なんでこういう仕様にしたんだろう。。stringFromNumberでもnilSymbol返していいと思うが。 …
文字列のフォーマットや文字色の変更ロジック(0以下なら赤字、0以上なら黒字にするとか)をUILabelのサブクラスを作って、各サブクラスでやっていた。 具体的には、以下のサブクラスを作った。 ・ChangePercentLabel ・ChangePriceLabel それぞれ変化率、変…
UIViewを継承してカスタムViewクラスを作成し、そのViewクラスのインスタンスをXIBから生成したが、 なぜかUIViewのオブジェクトになってしまうことがあった。 カスタムViewクラスのinitWithCoderも実行されない。 なぜ・・・と思っていたら、Targetにカスタ…
クラス名に付けるPrefix(NSとか)をカテゴリに付けていなかったので、 ヘッダファイル名がcocoapodでインストールしたライブラリとアプリでぶつかってしまい、不具合が発生した。 具体的には、 UIView+Geometory.h というヘッダファイルが複数できてしまった…
以下のWebサービスを使うと、画像をリサイズしてiOSアプリアイコンに必要なサイズの画像をすべて生成してくれる。便利。 Makeappicon - Generate app icons of all sizes with a click!
pod updateを実行したらこんなエラーが出た。 [!] Pod::Executable pull --no-rebase --no-commit You have not concluded your merge (MERGE_HEAD exists). Please, commit your changes before you can merge.以下を実行したら直った。(privateはprivateな…
原因はxcodebuildのCONFIGURATION_BUILD_DIRに相対パスを指定していることだった。 相対パスにしていると、各プロジェクト毎に.xcodeprojからの相対パスでビルド成果物を保存するフォルダを作ってしまうので、 Podsプロジェクトのビルド成果物が同じフォルダ…
テストの際に、間違ったバージョンのアプリを使ってテストしてしまっていたということが度々あったので icon versioningを使って解決することにした。 手順は以下。 ・ImageMagick installer for Mac OS XからimagemagickとGhostScriptをダウンロード・イン…
下記記事参照。へーと思うものが結構あった。 The Code Sheriff: 8 Tips for working effectively with Interface Builder
原因は、マージに失敗するなどして謎のUUIDがproject.pbxprojに残ってしまっていること。 project.pbxprojの中をunknown UUIDで検索すると、以下のような行が見つかる。 // 普通はこんな感じで、UUIDに対応するファイル名が書いてある。 FCD71ECBE65FA52C3CE…
以下のように、Protected.hで宣言しているプロパティがある場合、 // AbstractViewController_Protected.h @property (nonatomic) NSObject *obj; このクラスのサブクラスのインスタンスからこのプロパティにアクセスするとエラーになる。 // ConcreteViewCo…
以下の方法でやるのが一番見やすい。 ・AppCodeのChangesタブをFloatingにする ・Preview DiffをONにする メリットは以下。 ・シンタックスハイライトされてる ・Side by sideで変更箇所見られる ・ファイルの切り替えが↑↓キー押すだけ やっぱりDiffは左右に…
なぜか以下の現象が発生し困っていた。 ・ファイルを編集した直後はChangesタブの中に編集したファイルが表示される ・ビルドしたり、Changesをリフレッシュしたりすると消える ・エディタ内の編集した行であることを表示するマーク(行番号などを表示してい…
エクセルでよくやるみたいな書式設定が使えるとは知らなかった。 これ便利だなぁ。 [formatter setFormat:@"¤#,##0.00"]; 参考:cocoa - Change NSNumberFormatter's negative format from (xxx.xx) to -xxx.xx - Stack Overflow
Multiplierを設定すると防げる。 [numberFormatter setMultiplier:@1]; 参考:iphone - Formatting number as percentage - Stack Overflow
potatotips#5で発表してきます。 発表資料は以下になります。 http://hosokawa0825.github.io/slides/GetRidOfDelegateChainByResponderChain/#/
iOSスタートアップ勉強会#2で発表してきます。 発表資料は以下になります。 http://hosokawa0825.github.io/slides/HowToUsePrivateCocoaPodLiraries
Token-Pasting Operator (##)を使うとシンボルを動的に定義出来る。 ここでの動的に、というのは実行時に、という意味では無く文字列を結合してシンボルをつくることができるという意味。 Stringizing Operator (#)を使うとシンボルを文字列に変換できる。 #…
@implementationの中にメソッドが一つも無いとこのエラーになるっぽい。 これ、XCodeのバグだよね。。
以下のようにしてCGRectの定数を定義できる。 static const CGRect CGRectOne = {1,1,1,1};今までinitWithFrame:にCGRectを直書きしてたけど、定数定義するようにしよう。
なぜかは分からないが、XCodeを再起動したら直った。。 原因が分からないのが気持ち悪いなぁ。
項目が多いので調べるの結構しんどい。。 ・Debug Information Format dSYMを生成するかどうか。本番リリースのみYESにすることでビルド時間を短く出来る。 詳細:Spotify: iOSのビルド作業時間を短縮する - ワザノバ | wazanova ・generate profiling code …
どちらも一回だけ呼ばれるメソッドだが、呼ばれるタイミングが違う。 loadメソッドはクラスが最初にロードされた時に呼ばれる。 initializeメソッドは最初にクラスのいずれかのメソッド(インスタンスメソッド、Staticメソッドどちらでもよい)が呼ばれた時…
下記記事の通りやるとできた。 Doxygen+Graphvizで、Objective-Cのクラス図を作る - Qiita 手順を書き出すと以下。 ・Doxygenインストール ・Doxyfile生成 brew install doxygen graphviz doxygen -g・できたDoxyfileのHAVE_DOT = NOをYESに変更。 ・doxygen…