× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
「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; PR |
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]; とすれば良いようです。 複数別々なタイマーとして使いたいときかな。 |
・NSUserDefaults
AndroidでいうSharedPreferencesのような感じ。 使い方はほとんどかわらないがキーが見つからなかった場合に返ってくる値を設定出来ない。 初期値の設定の際は一旦NSMutableDictionary型で値とキーを設定してNSUserDefalusに入れる // NSUserDefaultsの取得 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; // 初期値の設定 NSMutableDictionary *defaults = [NSMutableDictionary dictionary]; [defaults setObject:@"0" forKey:@"HIGHSCORE"]; [userDefaults registerDefaults:defaults]; // 情報の更新 [userDefaults setInteger:1000 forKey:@"HIGHSCORE"]; // int型でキー:HIGHSCOREに値を登録 [userDefaults setObject:@"1000" forKey:@"HIGHSCORE"] // NSString型で(以下同文) [userDefaults synchronize]; // 明示的に反映させる(なくても反映される) // 情報の取得 int i = [userDefaults integerForKey:@"HIGHSCORE"]; // HIGHSCOREの値をint型で取得する NSString str [userDefaults StringForKey:@"HIGHSCORE]"; // HIGHSCOREの値をNSString型で取得する // 情報の削除 [userDefaults removeObjectForKey:@"HIGHSCORE]; // HIGHSCOREをキーごと削除する 情報の更新の際にNSString型の値を入れるときはsetObjectなのに、取得するときはStringForKeyになるのが不思議。 あとはSharedPreferecesより手順が少なくてすこし楽 参考SharedPreferences →【Android】SharedPreferences |
こんにちは。今回はObjective-Cの本を紹介します。
満足度 ★★★☆☆ iPhoneアプリの開発の学校。 "Objective-Cの本"と書きましたが正確には"iPhoneアプリをプログラム未経験者でも簡単に作れてしまう本"です。 Objective-Cプログラミングに関しては、ほぼ触れてないです。 そのためコレ1冊ではほとんどその本質に触れられないので これだけで開発者を目指せるかと言えばNOです。 「こんな感じなんだ〜」程度に使うなら◎ ただし ・Objective-Cのスタートには◎。ただし2380円 ・プログラムに興味のある、興味をひかせたい10代にも◎ 自分としては既に授業の始めの頃にやったことと重複するところも多かったのですが、しばらく触れていなかったのでリハビリには良かったです。 また、このアプリを改善するとしたらどんなことが出来るかな?と自分でアプリのカスタマイズが出来る余地がある程度の内容だったのでその点もよかったです。 サンプルプログラム数:4 サンプルプログラム用画像:あり サンプルソースコード完成品:あり 備考:変数名がすこし違和感を感じる。誤植等は見当たらなかった。ソースコードの解説が超初心者向け。初心者で1日で終了。 |
AVFoundationをつかって、アプリ起動時にBGMを流す方法。
こんにちは。 前期授業でボタンを押したときに効果音が鳴る方法をやったので、BGMを同じ方法でながせればと思いましたがうまくいきません。 調べてみるとAudioToolboxは ・読み込みが早い。 ・30秒以内の音用 というモノでした。 そこで別のAVFoundationフレームワークをつかう。 このフレームワークは動画の再生などにも使うそうです。(そこまで勉強してないので「〜そうです。」) BGMなので交換とは違い無限ループさせたいというときは・・・。 .numberOfLoops = -1 ; を追加する。-1が無限、0が1、1が2。 |
忍者ブログ [PR] |