Objective-C
私が考えるC++/ObjC/swift についてのコーディング規約です。 基本的にコーディング規約はプロジェクトの生産性を最大化するのが目的であり、厳しすぎず、ゆる過ぎないものにするべきです。 以下、箇条書きにしていきます。 守るべき規約 定数は先頭に k の…
Xcodeに付属するInstrumentsで遅い処理を特定する手順です。 Instrumentsの中のTimeProfilerを使います。 Profileを実行します。 TimeProfilerを選択します。 赤いボタンを押すと実行が始まります。 スレッド毎にかかった時間(milliseconds)と比率(%)が表示…
stackoverflow.com あるクラスをobjcからswiftへ移行するなら、継承関係にあるクラスはすべて、いちどきにswiftに書き換えないといけない。
Objective-CでNS_ENUM定義がswiftでどのように見えるか実験した。 enum.h typedef NS_ENUM(NSUInteger, Element){ ElementFire, ElementWater, }; typedef NS_ENUM(NSUInteger, FRUIT){ FRUIT_APPLE_1, FRUIT_ORANGE_2, }; typedef NS_ENUM(NSUInteger, ANIM…
勘違いしていたが、ObjC側からswiftソース上で呼び出せるのは、クラス(のメソッド)、プロトコル、整数型のenumのみだった。 swift上で書いたグローバル関数やグローバル変数は呼び出せないのだった。逆は可能。 つまり、ObjCのクラスはswiftへ移行できるが整…
OSXのAudioUnitを自作する場合は、Appleの以下のサンプルソースを参考に作るのが、もっとも早道です。 TremoroUnitというトレモロ効果を与えるサンプルです。 Core Audio Utility Classes ビルドしてできたTremoro.componentをどこにインストールすればいい…
swiftで使えるAtomic系APIがあったので備忘録としてリストアップしておく。 OSX/iOSで確認した。 func OSAtomicAdd32(__theAmount: Int32, __theValue: UnsafeMutablePointer<Int32>) -> Int32 func OSAtomicAdd32Barrier(__theAmount: Int32, __theValue: UnsafeMu</int32>…
2つのスレッドでウェイトを入れながら、一つの変数に排他アクセスをそれぞれ5000回行ったときの時間です。 MacOSX 10.10.4 MacBook Air (13-inch, Early 2015) @synchronized 0.092384 sec objc_sync_enter 0.090988 sec pthread_mutex_t 0.091280 sec NSLoc…
Distribution用にいろいろ作業していたら、なぜかテスト用デバイスに上記のエラーで転送できなくなった。 Provisioning ProfileがDebug,Release共通になっていたので、Releaseの方はDistribute用、Debugの方をXcodeによって自動生成されたものに置き換えたら…
no matching provisioning profiles found for appex com.security.application-groups iOSアプリのvalidationで上のようなエラーが出て1時間ほどハマっていたので、メモ。 解決方法は、Apple DeveloperのProvisioning ProfileのDistributionの対応アプリの…
Objective-CでNSString型のプロパティににはstrong属性ではなく、copy属性を使った方がよいという記事をみかけますが、 私はデフォルトのstrongのまま使います。 copy属性を使った方がよい理由として、NSMutableStringの値を設定したときに、copy属性の方が…
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::at(unsigned long) const", referenced from: 上記のリンクエラーがでるときは、以下のライブラリを追加すればよい。 libc++.dylib</char></char,>
現在InAppItemのファイルをXcode5.1.1でアップロードすることはできず、 ApplicationLoaderでアップロードするしかないようです。 OrganizerでのValidateすらできません。 手順 1) Xcode-Product-archiveする。 2) Orignizerでリストを選択しExportボタンを…
Xcode6から $(ARCHS_STANDARD)や $(ARCHS_STANDARD_32_BIT)や $(ARCHS_STANDARD_INCLUDING_64_BIT)には armv7sを含まなくなったようです。このせいでリンクエラーが出る場合があります。 対処方法としては、 armv7s対応をやめる のが素直ですが、armv7s対応…
$lipo -info lorem.a Architectures in the fat file: lorem.a are: i386 x86_64 armv7 arm64
Xcode5(iOS-SDK7)とXcode6(iOS-SDK8)を両方入れた環境で、 Xcode5でプロジェクトビルドすると ld: framework not found Metal for architecture のリンクエラーが出ることがありますが、その対処方法です。 プロジェクトのLink Frameworks AutomaticallyをNO…
Xcodeでよく使うパスのメモ 1) iOSでバイス、デバッグビルドで使われるパス。 古いバージョンの.aファイルなどが残っていると、間違ったものがリンクされるので、手動で消すときに使う。 ~/Library/Developer/Xcode/DerivedData 2) Xcode Pluginがインストー…
iOS/MacOSXのvDSP関数というのは、サンプル数が多くなるほど、for文をまわすより確実に処理速度があがります。 驚くことにSIMD組み込み関数を使うよりも速く、アセンブラ命令によってかなりの最適化が入っているようです。 俺のアプリは信号処理なんてやって…
~/Library/Logs/iOS\ Simulator/*/system.log
InstrumentsのLeaksでメモリリークを調査する際のTIPSその2です。 Leaksで素早くメモリリークを調べて直すのにはコツが必要です。 SXXP細胞のアレと同じですね。 コツが分かっていないと無駄に時間を使ってしまいます。 そこでTIPSとしてまとめておきます。…
iOSでHTTPS通信の内容をキャプチャする方法のメモです。 実デバイスでもiOSSimulator(MacOSX)でもできますが、ここでは、 iOS実デバイスがHTTPS通信をキャプチャされる側、MacOSX 10.8をプロキシとして使用します。 以下の記事を参考にさせて頂きました。 ht…
NSURLConnectionにはsendSynchronousRequestというクラスメソッドがありますが、 Basic認証は動かない。 ということで自作してみました。 https://github.com/pebble8888/PBURLConnection @interface PBURLConnection : NSObject + (NSData *)sendSynchronou…
Xcodeにはデフォルトでヒープ領域(mallocやnew)のアクセスオーバーランを 検知してくれる機能があります。 ただ、一発で検知してくれません。確実に検知する方法をここでは紹介します。 例えば、以下のようなヒープ領域をオーバーランするサンプルを使います…
私は、Xcode with XVim と MacVim を平行して使っているのですが、これをやるためには、Xcodeで開いているソースファイルをカーソル位置を保存した状態でMacVimで開けないと正直やってられません。 この機能が動くようにする手順を書いておきます。 手順1) J…
初心者向けにObjective-Cでのメモリ管理関連で私が持っている知識をまとめておく。 1) なるべくARC(Automatic Reference Counting)を使う。 2) IBOutlet にはARCの場合はweak、Non-ARCの場合はstrongを使う。 3) Non-ARCの場合、なるべくretain,releaseを書…
NSCopyingプロトコルを実装する時に、いつも書き方を忘れているのでメモしておく。 @interface Bean : NSObject @property (nonatomic,strong) NSString* country; @end @interface Coffee : NSObject @property (nonatomic,assign) NSUInteger coffeeid; @p…
githubを眺めていたら面白そうなプロダクトを見つけたので紹介します。 NSArrayやNSDictionaryにカテゴリを使って、ruby風のシンタックスシュガーを使えるようにしています。 Objective-C と RubyMotion の中間のような感じです。 https://github.com/mneorr…
Objective-Cのカテゴリ機能が含まれるstatic library を作ると、それを使う側は リンカフラグに "-ObjC" 、"all_load" を設定しないといけません。 Appleによる解説 私は面倒なのが嫌いなので、static libraryを作る際にはカテゴリを使わないようにしていま…
Objective-Cには次々と新しい文法が追加されていますが、 レガシーなOSバージョンでどこまで対応しているのかいまいち分かりづらいです。 Appleの資料に一覧を見つけましたが分かりやすくするため、勝手に日本語化してみました。怒られたら削除します。 OSX…
Xcodeで新規Objective-Cクラスや新規C++ファイルクラスを生成するときに Copyright表示や、インクルードガードがデフォルトで設定されますが、 ファイルをたくさん作っていると、デフォルトの内容を毎回同じように修正していて 効率が悪いので、どうにかでき…