iTunes U でスタンフォード大学がiPad and iPhone Application Developmentという講義を配信しています。きっと堅苦しくて小難しい講義なんだろうと思いつつ、iPadを買ったこともあってチラ見するつもりで購読してみたら、これがなかなか分かりやすくて面白く、Lecture 3まで一気に見てしまったのでご紹介します。
まず内容ですが、Xcode 4.2を使ってiOS 5でのアプリ開発について講義しているので、最新の環境でのアプリ開発のやり方を知ることが出来ます。
講義は無料で、PDFのスライド資料と講義ビデオに分かれています。講義ビデオにスライドが表示されるのですが、講師のしゃべってる内容が字幕表示されてスライドが見にくいことがあるので、PDF資料を先にダウンロードしておいた方が良いかもしれません。
Lecture1, Lecture2はアプリを開発する流れを大雑把に説明しているだけなので、全ての意味が分からなくても大丈夫です。Lecture2で電卓アプリを実際に 1から作っていて、スタンフォード大学の学生は流石にものすごく理解するのが早いんだなとびっくりしながら見ていましたが、きっと理解しながら見ている学生は少ないと思います。それというのも、Lecture3の「Objective-C」の講義を見てみると、改めて言語の基本的な説明がされていたからです。
なので、Lecture1, Lecture2は、「ふーん、iOSアプリの開発ってこんな感じなのね」くらいで大丈夫そうです。しかし、Lecture 2の講義を見ながら、Xcodeで同じようにコーディングすると1時間ちょっとの時間で電卓アプリができてしまいます。私はこれで嬉しくなって次のLecture 3も見てしまいました。
Lecture 2ではまったこと
Lecture 2の電卓アプリではまった内容を書いておきます。
演算子(+,*)ボタンをクリックするとクラッシュしたのですが、storyboardのオブジェクトとメソッドの接続がうまくいってなかったようです。
storyboardから線を引っ張って来てメソッドを作った後に、メソッド名を変更してしまったからでしょう。
storyboardの演算子のボタン(+, *, /, −)を右クリックして接続を確認し、正常に接続できていないことが分かれば、全ての接続を削除して再接続します。(ctrlキーを押しながらボタンオブジェクトをドラッグしてメソッドまで線を引く)
接続がちゃんとできているかどうかは、メソッドの左にある○にマウスをのせた時にstoryboardのオブジェクトが水色になって反応するかどうかで確認できます。
Lecture 3 - Objective-C
ポインタのstrongとweakの違いを重点的に説明されていました。iOS 5から仕様が変更になったようです。簡単にまとめておきます。
strongとweak
オブジェクトへのポインタのことであり、任意のメモリのポインタのことではない。
strong
ヒープ(動的に確保可能なメモリの領域)に保持したいポインタをstrongポインタとする。不要になったらこのポインタにnilをセットする。
weak
weakポインタは、strongポインタがこのポインタを参照している間だけヒープに保持される。
参照カウント
iOS 5では、コンパイラが参照数(reference count)をカウントするコードを自動的に追加して、実行時に参照数が0になったら即座に解放される。
これは、ガベージコレクションと似ているが、ガベージコレクションが自分では制御出来ず、いつ領域が解放されるのか不明であるのに対して、このreference countの仕組みは、strongポインタの参照数が0になったら遅延なく解放されるので自分で制御可能である。
例
ローカル変数はstrong ポインタである。
NSString * digit = sender.current.title;
メソッドが終了してスコープがはずれると、このstrongポインタは何も指さなくなる。そこでこのローカル変数でしかstrong参照されていないweakポインタは、メソッドが終了すると参照数が0になり領域が解放される、
メモリ管理の処理は不要
iOS 4ではdeallocでメモリを手動で管理していたが、iOS 5ではその必要がない。同様に、relase, retain, auto releaseなどのメモリ管理処理もiOS 5ではする必要がない。
噂には聞いていましたが、本当に自動でメモリ管理してくれるんですね。
iTunes U
iPad and iPhone Application Development (SD)
Paul Hegarty
コンピュータサイエンス
<前の記事 |
スリープ時に外付けHDDを自動切断する方法 | |
- |
iOSアプリ開発講義の補助資料 |
次の記事> |
コメントをお書きください
buytadalafilonline (火曜日, 06 11月 2012 20:39)
I intended to draft you this bit of remark in order to say thank you once again for the pretty guidelines you've documented here. It is quite strangely open-handed of you to present unhampered precisely what a lot of people could have made available as an electronic book to generate some cash for themselves, and in particular now that you could have tried it if you decided. Those good tips likewise served as a good way to recognize that some people have a similar dream the same as my personal own to understand a whole lot more concerning this condition. I am sure there are lots of more fun periods ahead for many who take a look at your website.