Objective-C
Storyboardを使ったUITableView なるべくコードを書かずにStoryboardでTableViewが表現されてるソースを見た時、少しハマったのでメモ。 セルがカスタマイズされたテーブルの表示の作成の流れを確認。 まずは、通常通りSingleViewApplicationの作成。 UITabl…
GCDの並列非同期通信 GCDの並列非同期処理を行います。 非同期通信 NSURL *url = [NSURL URLWithString:@"http://www.apple.com"]; // UI変更用にmainThreadを準備 dispatch_queue_t main = dispatch_get_main_queue(); // 並列のディスパッチキューを準備 d…
GCDの用語整理 GCDのディスパッチキューには 直列 DISPATCH_QUEUE_SERIAL 並列 DISPATCH_QUEUE_PRIORITY_HIGH DISPATCH_QUEUE_PRIORITY_DEFAULT DISPATCH_QUEUE_PRIORITY_LOW DISPATCH_QUEUE_PRIORITY_BACKGROUND がある また、それぞれ処理に同期(sync)と非…
Objective-CのBlocksのまとめ といっても全部まとめるとややこしいので、よく使われる関数の引数にBlocksを渡して、コールバックを受け取るという形のみに絞ってまとめます。 とわいえ基本形の復讐 ^(戻り値の型)(引数リスト){式} ところが、関数の引数にな…
以前にUIColorのカテゴリを書いた際に、Hex文字列をUIColorで返すカテゴリを作っていたが、Alphaを16進数ではなく%で送りたい場合のほうが多い気がしたので最近ではこちらを使っている。 Alphaだけ%指定 + (UIColor*)colorWithHex:(uint32_t)hex alpha:(floa…
プリプロセッサ iOS開発においてもC言語のプリプロセッサの機能が使われることが多々ある。 プリプロセッサは、C言語の機能の一つで、C言語の拡張であるObjective-Cでも、Swiftでも使うことができるため、iOS開発者はこれからも使い続けるであろう機能である…
並列処理 iOSで並列処理といえばGCDとNSOperation/NSOperationQueueの2種類があります。 GCDはCベース、NSOperation/NSOperationQueueはObjective-CベースのAPIです。 直列で処理を実行していると、先の重い処理が終わらないとUIの更新が行われず、ユーザを…
Storyboardを分割して管理する iOS開発の画面遷移管理はおおまかに 1.Storyboardをそのまま使う 2.一つのViewControllerにつき一つのxibファイル 3.機能ごとにStoryboardを切り分けて管理 の3つがあると思う。 1.は通常のやり方で教科書等ではこのやり方が…
QBImagePickerController QBImagePickerControllerを使うと標準のUIImagePickerControllerでは画像を一枚ずつしか選択できなかったのが、複数選択が可能になります。 https://github.com/questbeat/QBImagePicker QBImagePickerControllerのREAD.MEを読むと …
MultipeerConnectivityについて調べてみたことのまとめ MultipeerConnectivityはiOS7から追加されたクラッシックBluetoothの一種。 似たような通信にCorBluetooth,iBeaconがある。 が、CoreBluetoothもiBeaconもBLE(Blue)の一種。 BLEはBluetooth 4.0~の新し…
一瞬だけ表示して消えるModalView ModalViewを0.5秒間だけSubViewを表示して再度閉じるアニメーションを実行することで、クイズの正誤を伝えるようなアクションができる。 UIButtonをBRViewControllerに接続 - (IBAction)showView:(id)sender { BRModalViewC…
Xibファイルによるプロジェクト開発 準備 Storyboardを使わずにXibファイルでプロジェクトを進める際のViewControllerの呼び出し MainStoryBordを削除 TARGETSのGeneralのMain Interfaceのmainstoryboardを削除 AppDelegateを編集 - (BOOL)application:(UIAp…
animateWithDurationを使う [UIView animateWithDuration:0.5f // 何秒かけてアニメーションするか delay:0.5f // アニメーションし始めるまでの時間 options:UIViewAnimationCurveEaseInOut // アニメーションの加速・減速 animations:^{ // アニメーション…
遅延実行 GCDを使った遅延実行 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ // 処理 }); performSelectorを使った遅延実行 [self performSelector:@selector(メソッド名) withObject:nil afterDel…
丸め処理をカスタマイズし、正確に計算する NSDecilmalNumberクラスNSNumberクラスのサブクラスで、10進数の四則演算を提供する。 丸め処理を行うようなときは四則演算子を使うのではなくきちんとNSDecimalNumberクラスに変換して計算する。 今回は0~255で表…
ローカルのJSONデータの読み込み 今回はローカルのJSONデータを読み込むメソッドを作成。 格納されているJSONは配列型、JSONファイル名は引数で渡ってくることを想定。 +(NSArray*)getColorData:(NSString*)fileName { NSBundle *bundle = [NSBundle mainBun…
16進数をint型の0~255の数に変換する方法 // 2桁を取得 NSString *hex = @"AD"; // 16進数変換 NSScanner *scan = [NSScanner scannerWithString:hex]; unsigned int result; [scan scanHexInt:&result]; NSLog(@"ADは%dです",result)
CodeでAutoLayout制御 Viewを中央に表示 // サイズ指定して生成 UILabel *centerLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 20)]; centerLabel.text = @"center"; // Layout制約を決める前にaddSubviewを先にコール [self.view addSubvi…
メモリ管理について 「iOSデバッグ&最適化技法」を読みつつメモ Objecive-Cの参照カウントについて ARC無効の時の参照カウント0になってエラーが発生することについて 自分が作成したオブジェクトは全て自分が所有する オブジェクトの作成は「alloc」「new」…
Objective-C クラス変数とクラスメソッド クラス変数とインスタンス変数の違い クラス変数はクラスに割り当てられる そのクラスを扱うときは変数の値は共通 インスタンス変数はインスタンスに割り当てられる インスタンスごとに変数の値が異なる Objective-C…
Objective-C クラスの扱い .hファイル 公開用のインスタンスメソッド、プロパティ、クラスメソッドを記述 .mファイル メソッドの中身を記述 クラスを使う際はinportが必要なことに注意。
インスタンスの生成について インスタンス生成方法に NSString *str = [NSString new]; NSString *str2 = [[NSString alloc]init]; の2パターンが有る。 どちらでも同じなので、newの方が簡単に生成できる。 しかし、生成同時に初期値を代入することがある場…