× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
最近はJavaBronze試験の勉強をしています。
AndroidでJavaを始めた自分にとってはJavaの基礎知識をカバーするためにもこの試験は有用かと思い挑戦しています。BronzeをクリアしたらSilverへステップアップして行くつもりです。 資格試験対策の本と言語について解説してる本だとやっぱり切り口が違いますね。 PR |
すぐに分からなかったエラーメッセージを書いて行くと後々複雑なプログラムになって行ったときに役に立つかな。と思いコレから書いて行こうと思います。
どんなくだらないのでも。 Duplicate declaration of method メソッド名 重複したメソッドを書いているよ。 予測変換の罠。 |
Objective - C
デバイスの回転とビューの回転の制御 shouldAutorotateToInterfaceOrientation: Deprecated in iOS 6.0.となりました。 汎用的なメソッドだったので現在(2013/3時点)書店で販売されている本のほとんどで使われてます。 iOS6からは supportedInterfaceOrientations: を使うようです。 以下使い方 旧メソッド - (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { if (interfaceOrientation == UIDeviceOrientationLandscapeRight || interfaceOrientation == UIDeviceOrientationLandscapeLeft) { return YES; } else { return NO; } } 新メソッド - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; } 新メソッドでは対応したい向きの定数を返すだけ。複数の場合は"|"でつなげるだけのようです。 以下定数 UIInterfaceOrientationMaskPortrait // 通常 UIInterfaceOrientationMaskLandscape // 横向き UIInterfaceOrientationMaskLandscapeLeft // 通常状態のデバイスを右に倒したとき(下が左側になったとき) UIInterfaceOrientationMaskLandscapeRight // 通常状態のデバイスを左に倒したとき(下が右側になったとき) UIInterfaceOrientationMaskPortraitUpsideDown // 通常状態と逆さま UIInterfaceOrientationMaskAll // 全方向に対応 UIInterfaceOrientationMaskAllButUpsideDown // 逆さま以外 よっぽど変わった対応をさせない限り定数1つで済みます。(逆さまと横向きだけどか) 例にだした内容もUIInterfaceOrientationMaskLandscapeで済みます。 |
「iOS6対応!」って書いてあるから買った本「基礎から学ぶiPhoneアプリ開発」2013/3/1初版
Deprecatedになったデリゲードメソッドをちょくちょくのせていてつまづきます。 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation これは - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations をつかいます。 変更された後ろの引数を見るとNSArray型になっています。つまりオブジェクト型の配列にnewLocationやoldLocationだったものが入ってますよ。ってことなんだと思います。 現在の位置情報を取得したいときにはnewLocationの中身をつかっていました。 旧デリゲートメソッドでは引数として受け取っていたnewLocationですが配列から引き出してから使わないと行けなくなりました。あとはいままでと一緒。 CLLocation *newLocation = [locations lastObject]; // 一番最後の要素にnewLocationが入っているようです。 CLLocationCoordinate2D coordinate = newLocation.coordinate; |
1つなら以下で
[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(mainLoop) userInfo:nil repeats:YES]; でも2つのタイマーを別々に処理したいときはどうするればいいのか? NSTimer *mainTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(mainLoop) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer: mainTimer forMode:NSDefaultRunLoopMode]; NSTimer *subTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(subLoop) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer: subTimer forMode:NSDefaultRunLoopMode]; とすれば良いようです。 複数別々なタイマーとして使いたいときかな。 |
忍者ブログ [PR] |