勉強した事をつらつらと書き殴ります。
photo by MattsMacintosh
ワイヤーフレーム
ビューコントローラ
ライフサイクル
通常
- initWithNibName / initWithCoder / init
- awakeFromNib
- loadView
- viewDidLoad
- viewWillAppear
- viewWillDisappear
- viewDidDisappear
- dealloc
メモリ不足
- didReceiveMemoryWarning
- viewDidUnload
モデル
モデルオブジェクトクラスとそれを管理する、モデルマネージャクラスを用意するパターンがある。
詳細は、iOS開発におけるパターンによるオートマティズムを参照。
モデルオブジェクトクラス
モデルオブジェクトクラスの役割は以下。
- 情報の保持
- IDの生成
- アクセサの提供
- 保存と読み込み
モデルマネージャクラス
モデルマネージャクラスの役割は以下。
- モデルマネージャの参照の取得
- モデルオブジェクトの集合の管理
- モデルオブジェクトの操作
- モデルオブジェクトの集合の保存、読み込み
メモリ管理
公式
参考
- [iOS5] ARC (Automatic Reference Counting) : Overview | Natsu's note
- [iOS5] ARC : プロパティ属性と使い方 | Natsu's note
- [iOS5] ARC : Outletにはweakプロパティを使おう | Natsu's note
- [iOS5] ARC : 循環参照 | Natsu's note
- [iOS5] ARC : Autorelease, キャスト, 環境設定 | Natsu's note
- IOS 5 公開記念! OBJECTIVE-Cのメモリ管理の革命、 ARC 超入門(サンプルはGITHUBに公開) | ZERO4RACER PRO DEVELOPER'S BLOG
- ARC+BLOCKS+LLVM4.0時代のコード記述作法 | ZERO4RACER PRO DEVELOPER'S BLOG
- ♡ARCでめちゃモテiOSプログラマ♡ | slideshare
データ永続化 - CoreData
公式
参考
- iOS でデータを永続化する方法 | A Day In The Life
- サルでもわかる Core Data 入門【概念編】 | A Day In The Life
- サルでもわかる Core Data 入門【実装編】 | A Day In The Life
- iOS でプロパティリストを使ったデータの保存方法 | A Day In The Life
- Core Data Overview : 重要なクラス | Natsu's note
- NSPredicate : テンプレートを利用した生成方法(パフォーマンス改善) | Natsu's note
- [iOS SDK] CoreData で、デフォルトデータを読み込ませる方法 | ラクイシロク
- Study CoreDataのまとめと参考資料 | Everything was born from Love
mogenerator
- mogenerator + Xmo’d
- mogeneratorを利用してCoreDataクラスを編集・再生成しやすくする | CAPH TECH
- mogenerator で CoreData のカスタムクラスコード生成: きりかノート
MagicalRecord
- magicalpanda/MagicalRecord
- CoreDataをActiveRecord風に扱えるMagicalRecordの使い方 | Technology-Gym
- MagicalRecord 2.0がリリース | Technology-Gym
- MagicalRecord2.0を使えるように準備する - Object for cutie
- CoreDataを直接使っていたプロジェクトをMagicalRecord利用に移行する | Technology-Gym
- Magical Record: how to make programming with Core Data pleasant « Yannick Loriot
アニメーション
- 職人が教える!iOSアプリ開発で使いこなしたいとっておきのOSS:第1回 様々なアニメーションを実現するiOSアプリ用トゥイーンライブラリ3種を比較!|gihyo.jp … 技術評論社
- [iOS] たった2行でTweenアニメーションを実装できるコードを公開。 | Everything was born from Love
URLスキーム
参考
- iPhoneアプリ URLスキーム一覧!! スキーマの使えるアプリ まとめ | samulife_yuuのBlog
- カスタムURLスキームを利用する (1) | calmscape: //ソフトウェア開発部
- カスタムURLスキームを利用する (2) | calmscape: //ソフトウェア開発部
- iOSアプリにとりあえずでもカスタムURLスキームをつけるべし | Technology-Gym
- Safx: iOSで独自カスタムURLスキームを設定する方法について
- デバイスにインストールされているアプリ一覧を取得する - Over&Out その後
位置情報
- iPhoneアプリで位置情報と地図を使うための基礎知識(3/3) | @IT
- iOS5でジオコーディング/逆ジオコーディングを行う | CrossBridge
- YOLP(地図):はじめに - Yahoo!デベロッパーネットワーク
ネットワーク
AFNetworking
- AFNetworking/AFNetworking
- AFNetworking使ってみた
- Cocoaの日々: [Info] AFNetworking
- iPhone アプリ開発コミュニティのネットワークライブラリが ASIHTTPRequest から AFNetworking への移行の流れ? - laiso - iPhoneアプリ開発グループ
- AFNetworkingを使用したPDFファイルの受信処理サンプル。PDFファイルをサーバから受信中に総受信量(MB)を表示する。 — Gist
XCode
- ハイスピードXcodeコーディング – iphone_dev_jp東京勉強会 | DOTAPON Blog
- 好評のXcodeチートシート、MacBook Air 11サイズを作成しました | DOTAPON Blog
Git
.gitignore
.gitignore
build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
*.xcworkspace
!default.xcworkspace
xcuserdata
profile
*.moved-aside
.DS_Store
UserInterfaceState.xcuserstate
広告
iAD
Chartboost
InMobi
アクセス解析
Google Analytics for iOS
- Google Analytics SDK for iOS - Google Analytics — Google Developers
- analytics-api-samples - Google Analytics Sample Code - Google Project Hosting
- 10分でわかるGoogle Analytics SDK for iOS - murapongの日記
- iPhoneアプリのアクセス解析Google Analytics SDK for iOSについて - ninjinkun's diary
- iPhoneアプリの使用状況をGoogle Analytics for iOSで解析する | へびにっき
TestFlight
- TestFlightの使い方 - iOS 開発 - WOdka UserGroup
- iOS開発+Mac+JenkinsでCI環境構築1-Jenkinsでビルドが通るまで | Zero4Racer PRO Developer's Blog
- iOS開発+Mac+JenkinsでCI環境構築2-Gitコミット時に自動的にTestflight配信 | Zero4Racer PRO Developer's Blog
- iOS開発+Mac+JenkinsでCI環境構築3-GitHubにあるJenkinsのプラグインを試してみる | Zero4Racer PRO Developer's Blog
- 「TestFlight」によるテストアプリ配信の省力化と開発ノウハウ | Think IT
リモートロギング
NSLogと同様のメソッドシグネチャを持つTFLogというメソッドが提供されている。
#define NSLog(__FORMAT__, ...) TFLog((@"%s [Line %d] " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
アプリ登録/審査
- iPhoneアプリ 登録申請の手順をまとめてみた。 | NAVER まとめ
- iPhoneアプリ審査での111の禁止項目(意訳) | fladdict
- iPhone アプリ審査ガイドラインの変更点(2012.04.16現在) | ジェネシックスブログ
- いよいよ!Mac App Storeに自作アプリを申請しよう
- カメラアプリのreject「UIRequiredDeviceCapabilities」 - YOSHIKI Diary
デバッグ
- Xcode4.5でLLDBデバッガコマンドを使ってみる - Object for cutie
- もう return UIApplicationMain で止まっても困らない! Xcodeでのデバッグ方法 | Zero4Racer PRO Developer's Blog
AppDelegate.m
void uncaughtExceptionHandler(NSException *exception) {
NSLog(@"CRASH: %@", exception);
NSLog(@"Stack Trace: %@", [exception callStackSymbols]);
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
return YES;
}
Tips
- iPhoneアプリ開発と留学 : UIViewでユーザのタップを受け付けないように設定する
- guess what?: CoCafeの作り方
- iOS Advent Calendar 2011 : ATND
- iOSアプリ開発者が知らないと損するライブラリ7選 - Paradigm Shift Design
- iOS開発ハマりどころメモ | blog.bouze.me
- UINavigationControllerを使って、指定したビューまで戻ってメソッドも実行する|成長の果実
- 時間のかかる処理をバックグラウンドで実行する方法 - Awaresoft
- iOS 4.0 と iPhone OS 3.x の両方で動作するアプリケーションをビルドする設定 - 24/7 twenty-four seven
- Xcode 4でビルド番号を自動的に増やす方法 - Awaresoft
RunScript
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
コミュニティ
iphone_dev_jp
- iphone_dev_jp 東京iPhone/Mac勉強会を開催しました | 24/7 twenty-four seven
- 第2回 iphone_dev_jp 東京iPhone/Mac勉強会
- 第3回 iphone_dev_jp 東京iPhone/Mac勉強会
書籍
-
iOSデバッグ&最適化技法 for iPad/iPhone 発行日:2010/12/01
- メモリ管理の仕組みとInstrumentsを用いた解析方法について詳しく記載があります。
- 一度は目を通して理解を深めておく必要がある必読書です。
- iOS4プログラミングブック 発行日:2011/02/01
-
iOS開発におけるパターンによるオートマティズム 発行日:2011/02/07
- いわゆる、デザインパターンについて詳しく記載がしてあります。
- モデルのパターンについては、実務で利用出来そうです。
- Objective‐C 2.0徹底解説 発行日:2011/04/01