[SDK]iPhoneアプリ開発初心者質問箱19[touch][iPad]

このエントリーをはてなブックマークに追加
952946:2011/11/20(日) 10:09:30.16 ID:H6aGP4wS0
一度アプリを削除して、XCodeよりインストールし直したら直りました。
953名称未設定:2011/11/20(日) 12:21:00.32 ID:uXw0Oe/t0
こんにちは。
plistファイルに、webサイトのタイトルとURL。
それをtableViewで表示→アプリ内でサイトを表示出来るようなアプリを練習で作りました。
行を並び替えする方法は分かるのですが、並び替えすると、webサイトのタイトルだけが並び替えされ、アドレスは元の順番のままになってしまいます。
色々と調べながらやっているのですが、上手くいきません。
今のところ
NSIndexPath *stringToMove = [[bookmarkDictionary objectForKey:@"url"] removeObjectAtIndex:sourceIndexPath.row];
でエラーが出ています。
(分からないので、色々と当てはめています)
参考となりそうなサイトがありましたら、教えてください。
よろしくお願いします。
954名称未設定:2011/11/20(日) 13:52:49.84 ID:FBVs0O2e0
基本日本向けのアプリなのですが、
Infoの localization native development region
はen のままでも大丈夫でしょうか?
よろしくお願いします。
955名称未設定:2011/11/20(日) 16:13:47.19 ID:d0hQaZNZP
>>952
プロセスが死んで無かったのね。
956名称未設定:2011/11/20(日) 18:40:47.54 ID:uRFJlAS70
ready for saleなのにストアに並んで無いんだけど‥こっからまた、いろいろ時間かかるの?
957名称未設定:2011/11/20(日) 19:05:59.65 ID:ACDVXdxl0
>>956
その英語そのまま訳してみたら?
958名称未設定:2011/11/20(日) 19:20:56.85 ID:eZwsdXP30
そこから最大24時間かかるよ
959名称未設定:2011/11/20(日) 22:03:46.24 ID:80ZZ67qD0
iPhoneシミュレータ上で、ピンチイン・ピンチアウト操作(オプション+ドラッグ)が反応しないことが多いです。
(viewForZoomingInScrollViewが呼ばれない。)
Macを再起動したりすると反応しますが、1回ピンチ操作をすると、次はまた再起動しないと反応しません。
実機では100%反応します。
Xcode 4.2です。

何か原因はありますでしょうか。
960名称未設定:2011/11/20(日) 22:22:59.00 ID:5iYHRS8j0
ピンチインを実装するとき、touchesBeganメソッドを用いて実装するのってどうですか?
961名称未設定:2011/11/20(日) 22:39:11.35 ID:tVM1K0vL0
今はGestureRecognizerがある。細かく制御したいならtouchesBegan/Move/Endだけど。
962名称未設定:2011/11/20(日) 22:45:44.02 ID:80ZZ67qD0
ありがとうございます。でも実機ではちゃんと動くのに、
シミュレータがピンチに反応しなくなるってのは結構知られてることなんですか
963名称未設定:2011/11/20(日) 23:17:15.37 ID:LSa733TR0
実機では動くのに
シミュレータでは動かないなんてのはザラ。
逆もまた然り。
ちゃんと確かめて、最終的に実機で動けば問題ない。
964名称未設定:2011/11/20(日) 23:49:59.68 ID:6kLZ0quy0
>>962
聞いたことないねえ。
Safariとかではどうなの?
965名称未設定:2011/11/21(月) 00:09:02.39 ID:b0dU4a6y0
>>962
option を押すと丸が二つ出る?
Mac の機種とポインティングデバイスの種類は?変な機能拡張入れてない?
966名称未設定:2011/11/21(月) 00:09:04.45 ID:m9QxpnwZ0
ナビゲーションコントローラで、新しいページを作って推移するときは普通、
プッシュ、
[self.navigationController pushViewContoroller:newvc animated:YES];
ってやると思うけど、やりたいことは、こうじゃなくて
いったんルートに戻ってルートページからpushしたい。こんな風に。
[self.navigationController popToRootViewContorollerAnimated:NO];
[self.navigationController pushViewContoroller:newvc animated:YES];

でも、これだとルートに戻るだけでnewvcに推移しない。
どうすればいいんでしょうか。
967名称未設定:2011/11/21(月) 00:40:55.39 ID:b0dU4a6y0
>>966
popToRootViewController した時点で self.navigationController が nil になってるんじゃないかな。
968966:2011/11/21(月) 01:13:00.90 ID:m9QxpnwZ0
>>967
そうですねー。ありがとうございました
969名称未設定:2011/11/21(月) 01:13:50.66 ID:BTKUgIPQ0
自分は setViewControllers でスタックの中身ごっそり入れ替えたりする。

事もある。
970名称未設定:2011/11/21(月) 04:37:14.46 ID:VtsZ2If00
ARC使ってるけど、すごく便利だ。
__unsafe_unretained 使えば iOS4 にも対応できるし。

気をつけるのはCFRelease()とfree()ぐらい。
他は意識しなくてもリーク出てないです。すごい。
971名称未設定:2011/11/21(月) 05:29:00.50 ID:BlW3nvIh0
苦労も伴う
972名称未設定:2011/11/21(月) 09:27:07.88 ID:kz0qVqE+0
苦労なんてないぞ。
自分の作るクラスで事実上propertyが不要になるし。
973名称未設定:2011/11/21(月) 09:30:37.44 ID:QWdDwKgx0
は?
974名称未設定:2011/11/21(月) 09:46:05.70 ID:VtsZ2If00
propertyが不要てどういう意味なのか詳しく
ARCと何の関係も無い気がするんだが
975名称未設定:2011/11/21(月) 10:02:21.28 ID:+kQSZ+6A0
ローカル変数もすべてプロパティにすればretain/release書かなくて済むとかいうバッドノウハウを自慢げに書いてるブログがあったなぁ。
976名称未設定:2011/11/21(月) 10:13:58.80 ID:ReJkLak00
ARCってiOS4でも使えるの?
977名称未設定:2011/11/21(月) 10:16:42.21 ID:ggAfRQP10
>>975
ただの自己カプセル化だろ
バッドノウハウとか言っちゃうお前の頭を心配するわ
978名称未設定:2011/11/21(月) 10:31:58.61 ID:+kQSZ+6A0
>>976
weak 以外は使えることになってる。

>>977
いや、インスタンス変数じゃなくてローカル変数もすべてプロパティにして
retain/release 書かなくて済むようにしようって話だったんだが…。
検索しても見当たらないから、自分の頭がおかしかったってことでいいよ。
979名称未設定:2011/11/21(月) 10:48:45.45 ID:NRHpCiOy0
CoreDataの排他制御について教えてください。
ググって調べると,基本楽観的ロックの仕組みだということだけど,
NSManagedObjectContextにlock unlock tryLockのメッセージがあります。
ということは、排他制御もできるということでしょうか?その辺を書いてあるものを見つけられませんでした。
たとえば下のようなコードだと、他のスレッドではデータへのアクセスが待たされる?
[managedObjectContext lock];//<-ここ
[[managedObjectContext undoManager] disableUndoRegistration];
NSManagedObject* newO = [NSEntityDescription insertNewObjectForEntityForName:@"Entity"
inManagedObjectContext:managedObjectContext];
setValueごにょごにょ
if (![managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
[managedObjectContext processPendingChanges];
[[managedObjectContext undoManager] enableUndoRegistration];
[managedObjectContext unlock];//<-ここ
980名称未設定:2011/11/21(月) 10:55:42.25 ID:+kQSZ+6A0
>>979
Core Data は詳しくないけど、NSManagedObjectContext はスレッドセーフじゃなかった筈。
http://developer.apple.com/jp/devcenter/ios/library/documentation/CoreData.pdf
に並列処理に関する章があるので読んでみるといいよ。
981名称未設定:2011/11/21(月) 10:59:42.51 ID:k0T77VRC0
>>935
です。本番環境の方ではそんな事起こってるかどうかは知る由もない砂場プログラマーです(´・ω・`)
982名称未設定:2011/11/21(月) 11:00:32.24 ID:k0T77VRC0
>>981はレス番間違えました
>>940 でした
983名称未設定:2011/11/21(月) 11:00:38.61 ID:VCX8hFvf0
スレッドセーフじゃないから、別スレッドからアクセスする可能性があるときはlock/unlock
することによりアクセス権を確保して下さい。
あるいはそのスレッド専用の managed object context を作って下さい。ということ。>>979
984名称未設定:2011/11/21(月) 11:14:12.25 ID:ReJkLak00
>>978
ほほー、そうなんだ。iOS4のためにARC使ってなかったけど
全部ARCでやろうかな。
985名称未設定:2011/11/21(月) 11:41:16.44 ID:VtsZ2If00
>>984
最初は、本当に大丈夫なのか?って感じる。すごく感じる。
でもtouch2GのiOS4.2.1上で走らせてるが、今のところ全く問題ない。

それなりに経験がある人ならARCに移行しても混乱は無いと思う。
個人的には、初心者の方も最初からARCを使ってみて欲しい。
どちらにせよ、開発進めていく中でメモリ管理の概念は身につくので。
986名称未設定:2011/11/21(月) 12:05:22.19 ID:FJz9vx8Q0
>>978
http://d.hatena.ne.jp/kamiyan2/touch/20110220
これかな?
ちなみに、どこが良くないか教えて欲しい。まじに。
987名称未設定:2011/11/21(月) 12:22:25.28 ID:ReJkLak00
>>985
GCの新機能を使わなければiOS4でもいけるんかな。
不安はあるけど試してみる価値はあるね。
988名称未設定:2011/11/21(月) 12:32:48.27 ID:+kQSZ+6A0
>>986
いや、それじゃない。「クラスのポインタ系のメンバ変数は、すべてretain属性付きのプロパティにする。」ってのは、間違ってはいない。個人的には好きじゃないけど。
989979:2011/11/21(月) 13:00:32.94 ID:vEOrfa3f0
>>980, >>983
レスどうも。スレッド拘束パターンにすれば、スレッドセーフになるということではないですよね。
そのあたりが、どうもはっきりしなくて。
たとえば、(NSOperationなどで)非同期、並列にダウンロードしたデータを
次々にCoreDataにインサートする一方で(この段階で既に競合する可能性がある)
さらに、ダウンロードしてCareDataに保存されたものをユーザが編集する可能性がある。
というものを考えたとき,一般のデータベースだとセマフォみたいな仕組みで排他制御をするとおもいますが、
そのスレッド専用の managed object contextを作ると排他制御(スレッドセーフ)になるのだろうか?
990名称未設定:2011/11/21(月) 13:23:53.04 ID:QU5aPZ6X0
iOS4でARCのweakが使えないのはなんでなんだろう。
コンパイラがリファレンスカウンタ方式のコードを補完しきれないってこと?
991名称未設定:2011/11/21(月) 13:24:08.15 ID:k0T77VRC0
>>986
それ別に「ローカル変数もすべてプロパティ」なんて書いてないじゃん
まあ最後のルール1〜4一切同意できなかったけど
992名称未設定:2011/11/21(月) 13:39:38.13 ID:+kQSZ+6A0
>>990
weak を使うと、オブジェクトが dealloc された時に weak ポインタを nil にして回るわけだけど、そのためにはあらかじめ weak ポインタを登録しておく必要がある。
iOS 4 ではその辺のメカニズムが実装されてない。
993名称未設定:2011/11/21(月) 13:46:19.85 ID:NPYjT34V0
ローカル変数を全部プロパティってプロパティだらけになるじゃんw
994名称未設定:2011/11/21(月) 15:07:08.11 ID:kz0qVqE+0
>>990
weakは循環参照の解決のために互いに参照している場合なんかにどちらかをweak宣言するんだけど、
プロセス間でオブジェクトを受け渡した場合は、プロキシオブジェクトがシステム側で作成されてこれのポインタが渡される。
これがweakの場合即座にプロキシオブジェクトが削除されて都合が悪い。
それでweakのOSでの管理が必要となる。と思う。
995名称未設定:2011/11/21(月) 15:33:18.25 ID:QU5aPZ6X0
>>992 >>994
なるほど、実現するのにOSレベルでのサポートが必要なのね。
assignにしといて適当なタイミングでnil入れるコード吐けばいいじゃんとか甘く考えてた汗
勉強になった。ありがとう。
996名称未設定:2011/11/21(月) 15:34:43.75 ID:M7A6aa+50
>>989
ならない。
厳密に排他を実現したいなら、@synchronizedを使うなりして
クリティカルな部分は自分で制御する。もちろん、スレッドごとに
NSManagedObjectContextを作った上での話。
997名称未設定:2011/11/21(月) 17:17:43.25 ID:xBtdttLRP
>>987
GCってガベッジコレクタ?であればARCとは無関係。
998979:2011/11/21(月) 17:47:28.96 ID:+4DleCg20
>>996
サンクス。ということは、それぞれのスレッド内で
[NSManagedObjectContext lock]と[NSManagedObjectContext unlock]で囲ってやればいいですね。
999名称未設定:2011/11/21(月) 17:58:33.13 ID:+kQSZ+6A0
1000名称未設定:2011/11/21(月) 18:41:00.38 ID:5Alfn0S70
うめますよ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。