NSAutoReleasePoolの作成&解放タイミングについて - Togetter
Twitterのつぶやきマッシュアップメディア!
@togetter_jpをフォロー
マイページ
メニュー
設定
ログイン
トップ
ニュース
社会
地域
芸能・スポーツ
IT・Web
科学・教養
カルチャー
趣味
生活
仕事
ネタ・お笑い
ログ・日記
震災
311
iwj
生活保護
放射能
国会事故調
原発
支援物資
速報
国内
アジア
アメリカ
ヨーロッパ
その他
政治
経済
国際
法律
環境
コラム
東京
東京近郊
北海道
東北
関東
北陸・信越
東海
近畿
中国・四国
九州・沖縄
海外
芸能
テレビ
ラジオ
野球
サッカー
ゴルフ
格闘技
競馬
モータースポーツ
その他
Android
Apple
インターネット
パソコン
モバイル
ガジェット
サイト制作
プログラミング
その他
科学
テクノロジー
エネルギー
数学
物理
宇宙
自然
人文
建築
心理
その他
アニメ
ゲーム
マンガ
アイドル
映画
音楽
書籍
演劇
ファッション
社会学
カメラ
車・バイク
電車
旅行
釣り
歴史
アート
デザイン
動物
その他
ハウツー
レシピ
グルメ
恋愛
マネー
節約
健康・医療
教育
ペット
起業・ベンチャー
経営
マーケティング
会計・人事
法務
就職・転職
語学・資格
ネタ
お笑い
大喜利
画像・動画
やってみた
その他
ログ
日記
思い出
雑談
メモ
飲み会
議事録
イベント
セミナー
復興
原発
支援
政府
自治体
トップ
>
トップ
>
311
> NSAutoReleasePoolの作成&解放..
2010/03/30 16:42:06
iphone
cfrunloop
cocoa
nsautoreleasepool
+
NSAutoReleasePoolの作成&解放タイミングについて
XcodeでCocoa/Cocoa touchプロジェクトを新規作成したときに、main関数でNSAutoReleasePoolを生成してからランループを開始しています。「それならランループ内部でNSAutoReleasePoolの作成&解放を行ってしまえば良いじゃない」と思って呟いたときの、先達からのアドバイスです。
by
hkato193
11 fav
4292 view
Fav
11
お気に入りに登録ならここをクリック!
まとめ
メニューを開く
一括削除
スレッド作成時にAutoReleasePoolを作るけれど、例えばランループを作る場合は意味があるんだろうか?スレッドが死ぬまで解放されなさそうなんだけれど…。
返信する
RTする
ふぁぼる
hkato193
2010/03/29 21:20:43
@hkato193
何を言っているんですか。ランループの外ではなくて中でAutoReleasePoolの生成→解放(or drain)をしているじゃないですか。
返信する
RTする
ふぁぼる
hkato193
2010/03/29 21:27:54
@hkato193
ループの先頭で作って、末尾で開放すれば良いだけでは?
返信する
RTする
ふぁぼる
norio_nomura
2010/03/29 21:23:04
@hkato193
モザイクが出来にくいって利点が有ると思ってるんだけど。
返信する
RTする
ふぁぼる
cqa02303
2010/03/29 21:24:07
@hkato193
RunLoopはスレッドを作ると自動的に作られるもので、明示的に作るものではないと思います。
返信する
RTする
ふぁぼる
monokakido
2010/03/29 21:24:20
@norio_nomura
@monokakido
はい。書いてからリンゴを剥いていたときに気づきました。問題は2点:1.プールの生成タイミングが違う 2.ランループという言葉はCocoaアプリ用語で存在している。失礼しました。
返信する
RTする
ふぁぼる
hkato193
2010/03/29 21:31:07
@cqa02303
モザイク、ですか。メモリフラグメンテーションのような意味で考えてもOKですか?
返信する
RTする
ふぁぼる
hkato193
2010/03/29 21:32:54
@hkato193
おけ
返信する
RTする
ふぁぼる
cqa02303
2010/03/29 21:35:03
@cqa02303
ありがとうございます。
返信する
RTする
ふぁぼる
hkato193
2010/03/29 21:42:29
失態の後ですが敢えて続きの疑問を書きます。そうなると、なぜNSRunLoopでAutoReleasePoolを作れば良いのに、ユーザーに(あるいはテンプレートで)XXApplicationMainの前後でプールを作らせているのかなあ??モザイク防止?
返信する
RTする
ふぁぼる
hkato193
2010/03/29 21:38:51
@hkato193
RunLoop が thread に作られても、駆動するコードを組まないと動かないからですよ。駆動する前後に AutoreleasePool を必要とするコードを書く可能性があるからです。
返信する
RTする
ふぁぼる
norio_nomura
2010/03/29 21:42:49
ObjCのpoolの裏でやってる事を想像するだけで怖い。賢い人の作るプログラムは違うわー
返信する
RTする
ふぁぼる
cqa02303
2010/03/29 21:44:15
@norio_nomura
わわ、たびたびすみません。ということは、main.mに書かれるXXApplicationMainの前後のプール生成&解放処理は、ユーザーへの注意喚起の意味合いが強いと考えました。プールはネストして作られていますし。
返信する
RTする
ふぁぼる
hkato193
2010/03/29 22:03:57
クラスメソッド[NSAutoreleasePool showPools];で、コンソールにプールの各階層に入ったオブジェクトが確認出来る。
返信する
RTする
ふぁぼる
hkato193
2010/03/29 22:08:58
@hkato193
CFRunLoopが基本だからじゃないですかね?基本を学ぶには下のレイヤーで動いてるCoreFoundationが一番ですよ。
返信する
RTする
ふぁぼる
monokakido
2010/03/29 22:05:00
@monokakido
@norio_nomura
@cqa02303
ありがとうございます。CoreFoundationに足を突っ込んでみます。
返信する
RTする
ふぁぼる
hkato193
2010/03/29 22:14:53
@hkato193
CFRunLoopはスレッドごとに必ず存在するけど、そのWrapperであるNSRunLoopは呼ばれるまで作られないみたいです。CFRunLoop≠NSRunLoopです。
返信する
RTする
ふぁぼる
monokakido
2010/03/29 22:10:02
@monokakido
「CFRunLoopがスレッド毎に必ず存在する」という点が気になりpthreadで作ったスレッドに対してCFRunLoopGetCurrent()を呼んだところ、何物か分かりませんがアドレスが返ってきました。これも踏まえて更に調べてみます。
返信する
RTする
ふぁぼる
hkato193
2010/03/29 22:30:22
@hkato193
CFRunLoopGetCurrentを呼んだことで作られたのだと思います。必ずではないですね。「必要に応じて自動的に作られる」です。
返信する
RTする
ふぁぼる
monokakido
2010/03/29 22:40:43
@monokakido
ありがとうございます。「CFRunLoopは必要に応じて作られる」ですね、しっかと覚えておきます。
返信する
RTする
ふぁぼる
hkato193
2010/03/29 22:57:20
@hkato193
QT: この辺りを読むと良いかと - iPhone Dev Center: Threading Programming Guide: Run Loops
http://bit.ly/avNd1S
/via
@norio_nomura
返信する
RTする
ふぁぼる
norio_nomura
2010/03/29 22:16:30
@norio_nomura
ありがとうございます!
返信する
RTする
ふぁぼる
hkato193
2010/03/29 22:30:37
@hkato193
main.m でも、必要だから作ってるんじゃ無いのかな?試した事ないけど。 UIApplicationMain の中で RunLoop が駆動されるまでに、AutoreleasePool が必要なコードが使われてるかもしれないし。
返信する
RTする
ふぁぼる
norio_nomura
2010/03/29 22:13:04
@norio_nomura
試しに適当なiPhoneAppプロジェクトを作ってmain.mで作っている階層のプールをshowPoolsでチェックしたのですが、オブジェクトは1つも登録されていませんでした。ただ、その可能性は考えられますね。
返信する
RTする
ふぁぼる
hkato193
2010/03/29 22:36:31
@hkato193
main.m で AutoreleasePool を作らない様にして試して見たら?
返信する
RTする
ふぁぼる
norio_nomura
2010/03/29 22:38:55
Content from Twitter
残りを読む(18)
ブログへ
iframe版
拡張版
張付けプレビュー
Fav
11
あわせて読みたい
iPhone画面の遍歴 by loop99
autoreleaseのひみつ
iOS SDKの各クラスの完成度について雑感
2011/03/27 loop - line
zilを保存するpoolについて
powered by Preferred Infrastructure
コメント
見やすいように、時間軸よりも会話を(若干)優先して並べ替えました。
返信
hkato193
2010/03/30 16:49:49
0
コメントを入力してください。
Twitterにも投稿する
みんなのおすすめ商品
商品を編集
おすすめ商品を登録する
エキスパートObjective-Cプログラミング -iOS/OS Xのメモリ管理とマルチスレッド-
坂本 一樹
設定を変更する
まとめを作成する
プロフィール
フォローする
I wanna be an iPhone/iPad/Mac developer... / 「Metronome PRO」「Metronome Bounce」「iOS4プログラミングブック」「cocos2dレッスンノート」etc.
hkato193
link
twitter
rss
フォローされている
1
アップデート
まとめ
14
112
iOS4でマルチタスキングを実現するときの注意点まとめ
74
「C++のクラス作ったら、絶対にデストラクタをvirtu..
31
みんなにいじめられた、あるiPhone開発者
お気に入り
83
コメント
17
新着のまとめ
生活保護がなければ国営コンビニでフードスタンプ..
new
千葉 最終処分 で検索
new
【予約対策】フィギュアーツZERO サディちゃ..
new
マリンフェスタ2012 in Funabash..
new
Fate/Zeroの死亡キャラ生存IFを真面目..
new
もっと見る
@togetter_jp
最近追加された商品
NHKスペシャル 生活保護3兆円の衝撃
図解入門ビジネス 最新 著作権の基本と仕組みがよ〜くわかる本
弱者の居場所がない社会――貧困・格差と社会的包摂 (講談社現代新書)
相振り飛車を指しこなす本〈2〉 (最強将棋21)
新藤兼人・原爆を撮る
オススメ
マイスター
トゥギャ通
発達障害児を育てる幸せ満タン親バカなツイート集
up
中核派が北九州瓦礫受け入れ妨害行為への関与を宣言
高橋健太郎さん、クラブカルチャーと風営法につい..
new
“北九州、瓦礫焼却による放射能拡散予想図”は「..
頑張れ、米本君!!
「個人攻撃はあってはならない」と、全国紙に広告..
up
もっと見る
みんなのかんがえたさいきょうの都道府県EVOL..
new
河本準一、妻の母も生活保護を受給!
new
恥と気高さ
new
クローズアップ現代「フィルム映画の灯を守りたい..
new
茂木健一郎(@kenichiromogi)さん..
new
袁紹の用兵の才能と分かり易い『官渡の戦い』
new
もっと見る
第80回「日食写真と昭和格差」
号外「みんなの金環日食まとめ―画像から教養ま..
第79回「虚構新聞とJリーグ」
第78回「コンプガチャとIT系かあちゃん」
第77回「びろーんと自宅警備隊」
第76回「Appleとパンツクッキー」
もっと見る
コメント