思い立ったが吉日!

iOSが好きです。

2015-01-01から1年間の記事一覧

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開発者はこれからも使い続けるであろう機能である…

メソッド引数のポインタ

C

メソッド引数のポインタ Objective-Cを書いているとメソッドの引数に +(void)setMessageElement:(TBXMLElement *)element toMessage:(Message**)aMsg { [*aMsg setTest:[TBXML textForElement:test]]; } [self setMessageElement:msgsElement toMessage:&ms…

パフォーマンス改善の意味

パフォーマンス改善の意味 単純なアプリ作成を卒業し、ある程度規模の大きなアプリ開発をしていると並列処理やメモリ解放など、パフォーマンス改善の問題が結構出てくる。 アイディアが実現できればいい、動けばいい、表示に間違いがなければOKと言った作り…

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.は通常のやり方で教科書等ではこのやり方が…

Categoryクラスの追加

Categoryクラスの追加 Xcode7からFileNewして、Sourceの中にCategoryクラスの追加がない! StackOverFlowに解決策がありました。 NewFile -> Objective-C Fileの追加の中にあるようです。 File Typeの中にありました! File名はカテゴリの名前になります。 C…

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…

MVCを意識するために

MVCを意識するためのフォルダ構成 XcodeでCreate New ProjectしたらView,ViewController,ModelのGroupは作成しておく。

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)

NSCalendarが変わってる

iOS8の変更点 iOS8~らしいのだがNSCalendarの書き方が少し変わってたのでメモ NSYearCalendarUnit -> NSCalendarUnitYear NSCalendarUnitMonth ->NSMonthCalendarUnit NSCalendarUnitDay ->NSDayCalendarUnit NSCalendarUnitHour ->NSHourCalendarUnit など…

sendAsynchronousRequest in iOS9

iOS9 で sendAsynchronousRequest:queue:completionHandler がDeprecatedになってました NSURLSessionのdataTaskWithRequestまたはdataTaskWithURLに移行していきましょう。 NSURLSessionはiOS7から使えるようです。 NSURLSessionはシングルトンで呼ばなけれ…

特定のViewのAutoLayoutの解除のかき分け

特定のViewのAutoLayoutの解除のかき分け Objective-Cの場合 centerView.translatesAutoresizingMaskIntoConstraints = NO; Swiftでは、setterメソッドを使った書き方 [centerLabel setTranslatesAutoresizingMaskIntoConstraints:NO];

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」…

MVC

MVC 先輩社員に勧められた木下誠さんの「iOS開発におけるパターンによるオートマティズム」という本を読み進める。 iOSアプリ開発においてViewController部分は肥大化しやすく、クラス設計する際にMVCの切り分けに悩む事があった。 今回はこの3点を覚えてお…

Objective-Cのimport

Objective-Cのimport Objective-Cのimportの違いをまとめる import <◯◯/◯◯.h>を使う場合 クラスライブラリ(CocoaやCocoa Touchに予め用意されているクラス)をインポートするときに使う #import <AVFoundation/AVFoundation.h> #import <UIKit/UIKit.h> import"◯◯.h"を使う場合 自作ファイルからインポート</uikit/uikit.h></avfoundation/avfoundation.h>…

Objective-Cのコーディングルール

Objective-Cのコーディングルール Objective-C独特の命名規則などのまとめ プレフィックス NSString,UIScrollViewと同じように2,3文字の省略文字をクラス名の頭につける 開発中アプリ名やファイル作成者名にちなんだ文字列 WFPerson,AWASoundなど プロトコル…

クラス変数とクラスメソッド

Objective-C クラス変数とクラスメソッド クラス変数とインスタンス変数の違い クラス変数はクラスに割り当てられる そのクラスを扱うときは変数の値は共通 インスタンス変数はインスタンスに割り当てられる インスタンスごとに変数の値が異なる Objective-C…