ページ 11

ビューアプリケーションの適切な終了の仕方について

Posted: 2012年1月19日(木) 18:31
by HGKヒューマンリソース
iPhone4アプリを開発しています。複数のビューコントローラーを立ち上げた場合、どうやってそれぞれのビューを終了させたらよいでしょうか?
もしくはアプリを終了させることができるでしょうか?開発環境はXcode4,iOS.SDK5.0です。

アプリは、
main.c

AppDelegate

ViewController1

ViewController2

ViewController3
と遷移します。
ViewController3で終了ボタンをおすことでアプリを終了、もしくは最初の画面ViewController1に戻りたいのですが、現状ではインスタンスが
開放されず、メモリを食いつぶして異常終了するのではないかと心配です。現状では理由がわかりませんが、[Object release];などの
メモリ開放の記述をXcodeが受け入れません。ViewApplicationにおける、適切なビューの終了、もしくはアプリの終了の仕方を教えてください。

アプリは簡単な心理テストで入金をもくろんでいます。Objective-Cはつい最近はじめたばかりですが、プログラム開発の経験は10年あります。
それでは有力な方、お助けください。

Re: ビューアプリケーションの適切な終了の仕方について

Posted: 2012年1月21日(土) 01:50
by しひ
こんばんは。
releaseなどが弾かれてしまうのはARCが有効になっているからではないかと思います。
ARCとは、iOS5から導入された、メモリ管理をコンパイラにさせる仕組みのことです。
コンパイラに一任するので、自分でreleaseなどを書いてしまうと却ってエラーになります。
恐らく、ビューコントローラの解放等もよしなにしてくれるのではないでしょうか。

Re: ビューアプリケーションの適切な終了の仕方について

Posted: 2012年1月21日(土) 18:41
by HGKヒューマンリソース
しひさん、回答ありがとうございます。
ARCが有効な場合、deallocやらfinalize,releaseなど特に書く必要はないということでいいってことでしょうか?

Re: ビューアプリケーションの適切な終了の仕方について

Posted: 2012年1月21日(土) 18:58
by h2so5
dealloc, release はARCが有効な場合は自動で呼び出されるので、明示的に呼び出してはいけません。
mallocなどで確保したARCの管轄外のメモリ領域を解放する必要があるときは、deallocの定義が必要です。

finalize はガーベジコレクションが有効なときに使用するものでARCの場合は使いません。