思い立ったが吉日!

iOSが好きです。

Objective-C

Storyboardを使ったUITableView

Storyboardを使ったUITableView なるべくコードを書かずにStoryboardでTableViewが表現されてるソースを見た時、少しハマったのでメモ。 セルがカスタマイズされたテーブルの表示の作成の流れを確認。 まずは、通常通りSingleViewApplicationの作成。 UITabl…

GCDを使って並列非同期通信

GCDの並列非同期通信 GCDの並列非同期処理を行います。 非同期通信 NSURL *url = [NSURL URLWithString:@"http://www.apple.com"]; // UI変更用にmainThreadを準備 dispatch_queue_t main = dispatch_get_main_queue(); // 並列のディスパッチキューを準備 d…

GCDの用語整理

GCDの用語整理 GCDのディスパッチキューには 直列 DISPATCH_QUEUE_SERIAL 並列 DISPATCH_QUEUE_PRIORITY_HIGH DISPATCH_QUEUE_PRIORITY_DEFAULT DISPATCH_QUEUE_PRIORITY_LOW DISPATCH_QUEUE_PRIORITY_BACKGROUND がある また、それぞれ処理に同期(sync)と非…

Blocks

Objective-CのBlocksのまとめ といっても全部まとめるとややこしいので、よく使われる関数の引数にBlocksを渡して、コールバックを受け取るという形のみに絞ってまとめます。 とわいえ基本形の復讐 ^(戻り値の型)(引数リスト){式} ところが、関数の引数にな…

UIColorのカテゴリ

以前にUIColorのカテゴリを書いた際に、Hex文字列をUIColorで返すカテゴリを作っていたが、Alphaを16進数ではなく%で送りたい場合のほうが多い気がしたので最近ではこちらを使っている。 Alphaだけ%指定 + (UIColor*)colorWithHex:(uint32_t)hex alpha:(floa…

プリプロセッサ

プリプロセッサ iOS開発においてもC言語のプリプロセッサの機能が使われることが多々ある。 プリプロセッサは、C言語の機能の一つで、C言語の拡張であるObjective-Cでも、Swiftでも使うことができるため、iOS開発者はこれからも使い続けるであろう機能である…

NSOperationQueue

並列処理 iOSで並列処理といえばGCDとNSOperation/NSOperationQueueの2種類があります。 GCDはCベース、NSOperation/NSOperationQueueはObjective-CベースのAPIです。 直列で処理を実行していると、先の重い処理が終わらないとUIの更新が行われず、ユーザを…

Storyboardを分割して管理する方法

Storyboardを分割して管理する iOS開発の画面遷移管理はおおまかに 1.Storyboardをそのまま使う 2.一つのViewControllerにつき一つのxibファイル 3.機能ごとにStoryboardを切り分けて管理 の3つがあると思う。 1.は通常のやり方で教科書等ではこのやり方が…

QBImagePickerControllerを使うときに見たPHAsset

QBImagePickerController QBImagePickerControllerを使うと標準のUIImagePickerControllerでは画像を一枚ずつしか選択できなかったのが、複数選択が可能になります。 https://github.com/questbeat/QBImagePicker QBImagePickerControllerのREAD.MEを読むと …

MultipeerConnectivity

MultipeerConnectivityについて調べてみたことのまとめ MultipeerConnectivityはiOS7から追加されたクラッシックBluetoothの一種。 似たような通信にCorBluetooth,iBeaconがある。 が、CoreBluetoothもiBeaconもBLE(Blue)の一種。 BLEはBluetooth 4.0~の新し…

一瞬だけ表示して消えるModalView

一瞬だけ表示して消えるModalView ModalViewを0.5秒間だけSubViewを表示して再度閉じるアニメーションを実行することで、クイズの正誤を伝えるようなアクションができる。 UIButtonをBRViewControllerに接続 - (IBAction)showView:(id)sender { BRModalViewC…

Storyboardを使わず、Xibファイルで開発をすすめるとき

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は配列型、JSONファイル名は引数で渡ってくることを想定。 +(NSArray*)getColorData:(NSString*)fileName { NSBundle *bundle = [NSBundle mainBun…

16進数をintへ変換

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

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の方が簡単に生成できる。 しかし、生成同時に初期値を代入することがある場…