iOSアプリ開発

iOSでボタンを角丸にする方法

今回はiOSのボタンを角丸にする方法を紹介する。 (実装環境:Xcode 7.3.1) 1.ButtonをView上に配置する 2.Buttonの大きさと背景色を変更する (角丸になったことが分かりやすくするための手順で必須ではない) 3.ButtonにUser Defined Runtime Attributesを追…

iOSアプリ開発で日時を扱う時の注意点(暦と24時間表示の設定)

今回は、iOSアプリ開発で日時を扱う時の注意点を紹介する。 日付型である「NSDate」型を、文字列型である「NSString」に変換する際、「NSDateFormatter」クラスを使用することが一般的である。 ただ、NSDateFormatterの設定によっては意図しない変換が行われ…

iOSアプリ間でデータを共有する方法(Custom Paste Board)

今回は、iOSアプリ間で、データを共有する方法を紹介する。通常、iOSアプリはアプリ毎に独立した領域にデータを格納するため、別アプリのデータを利用することは出来ない仕組みになっている。 セキュリティ面を考えると、この仕組みは非常に有用であるが、利…

iOSアプリ開発でNSErrorの情報を出力する拡張NSLogを定義する方法

今回はNSLogを拡張して、NSErrorの情報を出力する識別子の定義方法を紹介する。わざわざ新しい識別子を定義しなくても、NSErrorの情報をログに出力することは可能であるが、記述が少々長くなってしまう。 今回紹介する方法を用いれば、NSErrorの変数を直接引…

iOSアプリ開発でログにログレベルを導入する方法

iOSアプリ開発でログを出力する場合「NSLog」を使用するが、Javaでログ出力に用いられるLog4Jのログレベルの様な考え方は存在しない。 今回はiOSアプリ開発でログにログレベルを導入する方法を紹介する。 Log4Jのログレベルは、設定値によって出力するログを…

iOSアプリ開発でログにクラス名とメソッド名を出力する方法

iOSアプリ開発でログを出力する場合「NSLog」を使用するが、「NSLog」の出力には出力したクラス名やメソッド名が含まれない。 これだとログに出力する文言に気を使っておかなければ、不具合箇所を特定するのに時間がかかることがある。 今回はログにクラス名…

iOSアプリ開発で画面のフリーズを抑止する方法

ユーザのUI画面へのアクションで、時間を要する処理(例:通信処理、DB処理)を実行すると、処理が完了するまで画面がユーザの操作を受け付けなくなる。この状態は良いユーザビリティとは言えない。 今回はiOSアプリ開発で画面のフリーズを抑止する方法を紹介…

iOSアプリ開発においてFrameworkを自作する方法【手順5】

今回は、前回の続編として、「.framework」ファイルを自作する方法の最終回として「手順5.Frameworkをビルドし利用する」を紹介する。繰り返しになるが、「.framework」ファイルを自作する方法に関しては、下記のサイトで非常に丁寧に紹介されている。 iPhon…

iOSアプリ開発においてFrameworkを自作する方法【手順4】

今回は、前回の続編として、「.framework」ファイルを自作する方法の「手順4.Frameworkで実行したい処理をクラスとして追加する」を紹介する。繰り返しになるが、「.framework」ファイルを自作する方法に関しては、下記のサイトで非常に丁寧に紹介されている…

iOSアプリ開発においてFrameworkを自作する方法【手順3】

今回は、前回の続編として、「.framework」ファイルを自作する方法の「手順3.Targetを作成し、Run Scriptを設定する」を紹介する。繰り返しになるが、「.framework」ファイルを自作する方法に関しては、下記のサイトで非常に丁寧に紹介されている。 iPhoneア…

iOSアプリ開発においてFrameworkを自作する方法【手順2】

今回は、前回の続編として、「.framework」ファイルを自作する方法の「手順2.Property Listを作成する」を紹介する。繰り返しになるが、「.framework」ファイルを自作する方法に関しては、下記のサイトで非常に丁寧に紹介されている。 iPhoneアプリ開発自作F…

iOSアプリ開発においてFrameworkを自作する方法【手順1】

Appleが提供するライブラリの多くも「.framework」ファイルで提供されており、iOSアプリ開発におけるライブラリの一般的な形式の一つと言える。 しかし、「.framework」ファイルを作成しようとXcodeのテンプレートを探しても該当するものが存在しない。 今回…

iOSアプリ開発におけるNotification(通知)の使い方

Notification(通知)は、任意のオブジェクトに対して、メッセージを通知する仕組みである。 今回はNotification(通知)の使い方を紹介する。 Notification(通知)は非常に便利な仕組みであるが、多用するとソースコードの可読性を損なう恐れがある。 特に複数人…

iOSアプリ開発においてデリゲートを自作する方法

デリゲートは委譲とも呼ばれ、あるオブジェクトの処理の一部を、別のオブジェクトに処理させることを指す。 Appleから提供されているライブラリにも、この仕組みは多用されているので、開発中に使用する機会は多い。 今回は、このデリゲートの仕組みを自作す…

iOSアプリ開発における定数定義の方法【最適解編】

過去3回iOSアプリ開発における定数定義方法を紹介してきた。 ・iOSアプリ開発における定数定義の方法【基本編】 ・iOSアプリ開発における定数定義の方法【環境毎設定編】 ・iOSアプリ開発における定数定義の方法【マクロ使用編】今回は現時点で筆者が考える…

iOSアプリ開発における定数定義の方法【マクロ使用編】

以前iOSアプリ開発における定数定義の方法として、「extern」を使用する方法を紹介した。 今回はマクロを使用した別の定数定義方法を紹介する。 1. 定数を定義する専用のクラス「AppConsts」を作成する 2. 「.h」ファイルに「#define」を用いて定数を定義す…

iOSアプリ開発における定数定義の方法【環境毎設定編】

本番環境・テスト環境で、アプリが接続するサーバURLが異なる事は少なくない。 この様に定数でありながら、条件により有効になる値を変更する必要がある場合の、定数定義の方法を紹介する。 (基本的な定数定義の方法は、「iOSアプリ開発における定数定義の方…

Xcode6でPCHファイルを追加する方法

Xcode6.xで新規にプロジェクトを作成すると、Xcode5.xまでデフォルトで作成されていた「-Prefix.pch」が作成されなくなっている。 今回はXcode6.xで「-Prefix.pch」を手動で追加する方法を紹介する。 1.プロジェクトツリー上でファイルを追加する 2.Prefix H…

iOSアプリでzipファイルの解凍を行う方法(SSZipArchive)

サーバからiPhoneに大きなファイルをダウンロードする場合、zip圧縮して通信容量を削減することは少なくない。 今回は、iOSアプリでzipファイルを解凍する方法を紹介する。 1.ライブラリSSZipArchiveをダウンロードする 2.ライブラリSSZipArchiveをプロジェ…

iOSアプリでXMLを解析する方法(NSXMLParser)【性能向上編】

前回はNSXMLParserを使用して、XMLデータを解析する方法を紹介した。 ただ、前回紹介した方法は、性能面で問題点がある。今回はその問題点に対する改善策を紹介する。 下記の実行結果からも分かるように、取得したいcountの値は4行目で取得できているにも関…

iOSアプリでXMLを解析する方法(NSXMLParser)【基礎編】

今回はiOSアプリでXMLをNSXMLParserを使用して解析する方法を紹介する。 NSXMLParserは「libxml2.dylib」を必要とするので、プロジェクトに追加しておくこと。 最初にNSXMLParserの主なデリゲートメソッドを紹介しておく。 これらのデリゲートメソッドを使用…

iOSアプリを実行しているデバイスの種類を取得する

iOSアプリから、そのアプリが実行されているデバイス(端末)の種類を取得する方法を紹介する。用途としては、サーバ連携があるアプリで、実行デバイスの情報を収集する等が考えられる。ソースコード> // 使用するクラスで「<sys/sysctl.h>」をインポートしておく size_t siz</sys/sysctl.h>…

iOSアプリ開発における別スレッドで通信する時の注意点(NSURLSession)

UI画面のカクつきを軽減するために、内部処理を別スレッドで実施することは少なくない。 その際、NSURLSessionでサーバ通信を行う場合、設定に気をつけないと通信結果がメインスレッドに返却されていまい、結果として画面のカクつきを引き起こしてしまう。今…

iOSアプリ開発でデータをgzip圧縮する方法

iOSアプリで端末からサーバに対して大きなデータを通信する際に、通信データをgzipに圧縮して通信を行うことがある。 今回は、iOSアプリでデータをgzip圧縮する方法を紹介する。具体的には、NSData型のデータを引数として受け取り、gzip圧縮したデータをNSDa…

iOSアプリが実行されている端末を特定する方法

今回は、作成したiOSアプリが実行されている端末を、一意に識別するためのIDを取得する方法を紹介する。取得したIDをサーバで保持し、同じIDでアクセスしてきた場合は、前回の続きから実行する等の使用方法が考えられる。 「UIDevice」の「identifierForVend…

iOSアプリ開発における定数定義の方法【基本編】

今回は、iOSアプリ開発における定数定義の方法を紹介する。 1. 定数を定義する専用のクラス「AppConsts」を作成する 2. 「.h」ファイルに「extern」キーワードを用いて定数名を定義する 3. 「.m」ファイルに定数に格納する値を定義する 1. 定数を定義する専…