[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad] [無断転載禁止]©2ch.net

1名称未設定2017/01/12(木) 19:40:23.70ID:wKfH+XA90
iPhone, iPod touch用アプリケーションの開発を始めたばかりの初心者向け質問スレ。

■質問する前に■
1. 質問は日本語もしくはObjective-C/Swiftで
 質問に質問で返されても逆切れしない。それは質問の仕方が悪いってことだってばよ。
2. どういう内容であれレスをもらったら報告とお礼の言葉を忘れずに。
 回答者は自分の時間を使って親切で回答してくれています。
3. 回答者は自分も初心者であった事を忘れずに。
4. マルチポスト(複数のスレに同じ質問を書込むこと)は厳禁!
5. 質問は可能な限り具体的に。
 ただ「エラーが出ます」ではエスパーかスタンド使いでなければ答えられません。
 エラー内容をちゃんと書きましょう。
6. わからない部分のコードをコピペすると手っ取り早いです。
7. このスレは無料プログラミング教室ではありません。
 「○○の仕方を教えてください」という質問はなるべく避けてください。
 「自分で調べたけどわからなかった事」を質問するというスタンスを忘れずに。
8. バグを安易にOSや開発環境のせいにしない。
 自分の知識の無さを棚に上げて人のせいにするなんて百年早い。
9. 質問する前にもう一度よく考えてから質問しよう。

790名称未設定2018/01/14(日) 20:13:44.51ID:rIRvTO4e0
NSTimerを0.01秒間隔で動作させて、
連続で効果音を鳴らしたいのです。
効果音の長さは0.01秒よりも長いですし、
連続で鳴らすとプログラムがスローになり、効果音もブツ切れ状態です。
理想は連続で鳴らした効果音が輪唱のように重なり合うことです。
どうすれば実現可能でしょうか?

791名称未設定2018/01/14(日) 20:34:10.70ID:ZEB1KSu60
https://qiita.com/Kta-M/items/ae892ca159186045e95d
AudioUnit.framework
>複数サウンドの同時再生など、低レベルな制御を行う。
>凝ったことをしようとしたらこれを使わないといけない。
たぶん、この辺り

792名称未設定2018/01/14(日) 22:06:43.37ID:9GxRoCsw0
0.01sec = 10ms ってフランジャーだな
そのレベルだと791のとおりAudioUnitで自分でフランジャー作るか
出す音が決まってるならDTMでも使って初めからそういう音を用意するかだろうな

793名称未設定2018/01/14(日) 22:08:39.16ID:9GxRoCsw0
つか、NSTimerでやるもんじゃないと思うがw

794名称未設定2018/01/16(火) 21:32:56.04ID:fEY5nPYK0
>>0791
>>0792
>>0793
アドバイスありがとうございました。

AVAudioplayerを10個定義して連続して鳴らしたら、それっぽくなりました。
0.01秒単位ではキツイので、0.20秒毎に調整しました。

795名称未設定2018/01/18(木) 09:22:38.56ID:F5hIKVS50
アプリ提出の審査が理不尽に不公平になって、iPhoneアプリの開発者が離れが起きている。

アンドロイドにはKotlinが出てきて開発者が増えている。

Guideline 4.2 - Design - Minimum Functionality

アップルのGuideline 4.2の連発で簡単なアプリはもう提出しても審査には通らない。まだアンドロイドの方が通る。

iPhoneアプリの開発者離れが起きている。

796名称未設定2018/01/18(木) 10:02:02.07ID:F5hIKVS50
アプリ提出の審査が理不尽で不公平になってしまって、iPhoneアプリの開発者離れが起きている。
アンドロイドにはKotlinが出てきて開発者が増えている。

Guideline 4.2 - Design - Minimum Functionality

アップルのGuideline 4.2の連発で簡単なアプリはもう提出しても審査には通らない。まだアンドロイドの方が通る。
簡単でなく多機能なアプリでも4.2を連発してくる。もはや作為的やっているとしか言いようがない。

iPhoneアプリの開発者離れが起きている。

開発者は開発情報のみなもとだった。それを閉め出してからiosの勢いがなくなった。
今からiphoneアプリやってもまず4.2で通らない。審査で落とされる。簡単な機能だけのアプリはまずリジェクトされる。
ちなみに複雑なアプリでも同じようなことが起きている。Rssリーダーのようなアプリでも機能が簡単すぎるといわれリジェクトされている。
アップルは信用できない。これは確か。ころころ方針を変える。昨日まで審査に通ったアプリが、今日から通らなくなるというのが普通にある。

797名称未設定2018/01/18(木) 11:56:35.39ID:CzouGsux0
マルチポストしたりして何が言いたいのかな?
競合がいなくなるのは願ったり叶ったりだよw

798名称未設定2018/01/18(木) 12:49:16.83ID:CHVGeu/L0
>>712
Programming Fontを使うべし!

Ricty Diminishedとか!

799名称未設定2018/01/31(水) 11:25:30.84ID:wFkLe8a50
iPhoneアプリの開発ってPC、iPhoneのどちらからでも出来るのですか?
またPCの場合windows10は使えますか?

800名称未設定2018/01/31(水) 20:15:10.99ID:6+ZvnW1N0
すげえ釣り針だな

801名称未設定2018/01/31(水) 20:42:40.85ID:wFkLe8a50
すいません初心者なんでほんと分かんないんです
PC用のソフトを作る時はPCのIDEでプログラムのソースコードを書いて作るってのは知ってるんですけど
そもそもスマホのアプリを作る場合ソースコードを書いて作るのはPCとスマホどちらでやるものなんですか?

802名称未設定2018/01/31(水) 21:05:19.46ID:wZBxFCDw0
>>799
pcの場合、適応するマザーボードの場合は、HackintoshってOSを入れて
xcodeで開発できるらしいよ

803名称未設定2018/01/31(水) 21:47:05.23ID:yBrnlRnZ0
アプリの作り方の初歩は本一冊買えば済む話

804名称未設定2018/01/31(水) 23:15:04.09ID:5gNkYl+S0
>>801
ゲームなら今の流行りはunityというツール使って開発する。
winでもMacでも開発できる。
ただiosアプリをビルドして提出するにはMacあった方がいい。

805名称未設定2018/02/01(木) 00:09:36.50ID:lzV8bc660
J

806名称未設定2018/02/01(木) 02:19:03.80ID:xbGYP4ZN0
一部の意地の悪い2チャンネラーはコードを紙のノートに書いて、脳内でシュミレートしろという。

これは無駄に高価なツールを買わせようとするワナだよ。

脳内でコード書いて、シュミレートし、うまくいったら脳内に記憶すればいいだけ。

将棋指しが脳内で駒を動かすように、アプリの動作をシュミレートするのがコツだね。

807名称未設定2018/02/01(木) 02:19:45.84ID:poxo5Btl0
objective-cでプログラムを一時停止にして、何らかのアクション(ボタンを押す等)で再開は可能でしょうか?
アニメーションのような動きのあるプログラムで実現したいです。

808名称未設定2018/02/01(木) 03:06:52.58ID:hIu/CWHR0
何がアニメーションするのか発言からはよくわからないが
ゲーム的なものならSpriteKitでググってノード
(ゲームの自機や弾、敵、ボタン、マーカーなど表示されるもの全般)の
アニメーション機能使えば実現できると思う
と、いちおうスレ趣向に沿って答えておく。

80908072018/02/01(木) 03:53:18.37ID:poxo5Btl0
>>808
返信感謝します。
説明不足ですみません。
具体的に言いますと
UIDynamicAnimatorを使用した動きの途中で一時停止と再開を実現したいのです。

810名称未設定2018/02/01(木) 10:49:31.57ID:ZhleT67z0
remveAllBehaviors でできんか

8118072018/02/01(木) 14:32:49.29ID:poxo5Btl0
>>810
返信ありがとうございます。
removeallで止まるまではいいのですが、物理運動中のものを、その後再開させることが難しいのです。
現在、物理運動中のベクトルを保持しておいて一旦削除し、再開時に再表示してpushで方向指定で理想どおりの動きはするのですが、スピードの調整に苦労しています。

812名称未設定2018/02/03(土) 14:57:10.20ID:3QES9vo60
>>802
>>804
やっぱmacPCあった方がいいんですね
iphoneでiphoneアプリのコード書く事はあまりないんですね
ありがとうございました。

813名称未設定2018/02/03(土) 17:19:41.42ID:6HG4YCtP0
macPC

新しい言葉だな。

814名称未設定2018/02/03(土) 19:59:57.93ID:DPddR5y/0
本気っぽいのがなんだか

815名称未設定2018/02/03(土) 21:15:51.10ID:B0QeqTz20
お手軽な UIView.animate~ ってやつは一時停止できない仕様で、UIViewPropertyAnimator クラスを使えば、アニメーションの一時停止できるって overview に書いてあった。
この新クラス使ったことないけど。

816名称未設定2018/02/04(日) 20:03:16.99ID:x9GfDUbU0
macPCwwwww

817名称未設定2018/02/05(月) 03:19:35.53ID:HzV4+2470
iPhone世代は Mac が使えない

アイフォーン(iPhone)が誕生してから10年、今日では、インターネット接続機器の主役は MacPC から iPhone に交代している感もある。

東京都内のアプリ開発会社で、MacPC の基本スキルを新入社員に教える研修担当者は語る。
入社1年生対象の研修で、デスクトップMacPCを使って「XCode」「iWork」「keynote」といったソフトの基本操作とプログラミングを教える。

初めの講義で、研修担当者はひとりの新人社員にこう声をかけられた。

  「電源が入りません」

見ると、MacPC本体の電源スイッチではなく、ディスプレーを必死に押していたという。

818名称未設定2018/02/05(月) 08:33:00.99ID:agNXmfyk0
駄文書くのに何分浪費した?

819名称未設定2018/02/11(日) 20:24:33.48ID:0s64sOq+0
objective-cでavaudioplayerで効果音を鳴らしたいのですが、頻繁に鳴らすと重くなってしまい、画面が少しカクカクします。
音を鳴らさない設定にすると画面はスムーズに動作しています。
一番軽い効果音を鳴らす方法があれば教えてください。
avaidioplayerに拘りはありません。

820名称未設定2018/02/11(日) 22:39:42.53ID:y0HoesxH0
常識的な使用のレベルで重くなることはないかなあ。
プログラムの仕方が間違ってる可能性が。

821名称未設定2018/02/12(月) 13:47:35.17ID:m6XkVJxe0
よくあるのが多重に鳴らしてるケース

8228192018/02/12(月) 23:07:21.26ID:O9l/BI270
>>820
プログラムの組み方が悪いのかもしれません。
Viewがhiddenやalpha=0.0でも数多く表示している状態だと重くなりますでしょうか?

>>821
シューティングゲームを作っていて、連続で攻撃した際の効果音で画面が重くなります。
同時に効果音が発生することも出て来ますが、同時でも重くならない工夫があれば教えてください。
音だけでこれほど重くなるとは思いもしませんでした;;

823名称未設定2018/02/13(火) 09:36:57.31ID:3WpfdZES0
毎回都度playしてんのかな
事前にprepareToPlayとかしてる?

8248192018/02/13(火) 11:46:52.80ID:zNmYpsVu0
>>823
毎回playしています。
そのplayする際に呼び出すプログラム中で、preparatoplayが記述されていました。

825名称未設定2018/02/13(火) 15:53:13.64ID:3WpfdZES0
prepareToPlay自体が重いので事前にやっておくってことさ

826名称未設定2018/02/13(火) 15:54:54.13ID:3WpfdZES0
同様の症状が発生する単機能のアプリ作って実験してみては

8278192018/02/13(火) 19:41:21.95ID:JnFNbuBm0
>>825
アドバイス感謝致します。
もう何が何だか分からなくて、効果音を多重に鳴らすだけでカクカクしてしまうので、諦めの境地です。
音を消すと全く問題ありません。
音の鳴らし方の工夫もして見ましたが、かなりマシになるものの、多少のカクカクは残ります。
(マルチスレッドと、効果音を複数定義しておいて、順番に鳴らしていく等)

828名称未設定2018/02/21(水) 20:13:44.19ID:WbGtehht0
ノートン使っている人で、xcodeがフリーズしている人いますか?
symdaemonというプロセスがxcodeをフリーズさせているようなのですが、対処法がわかりません。再インストールしてもダメでした。

829名称未設定2018/02/21(水) 20:34:27.13ID:EZtnt5NJ0
使ったことねーけどOpenAL? はハードで鳴らすだろうから試したら

830名称未設定2018/02/21(水) 23:14:05.87ID:bpVoX4zK0
>>828
それxcode関係ないから他のスレで聞いたら?

8318192018/02/22(木) 04:53:53.64ID:FkecRMXe0
>>829
アドバイス感謝致します。
OpenALをネットで調べてAvaudioPlayerと差し替えたところ、一切カクカクが無くなりました。
しかし問題が発生しました。
シューティングのあたり判定で短い時間差で命中した際に、音が1回しか鳴りません。
AvaudioPlayerに戻すと短い時間差でも音が連続して鳴ります。
せっかく負荷が減ったのに残念です。
OpenALは同時再生に不向きなのでしょうか?

832名称未設定2018/02/22(木) 12:34:43.55ID:TDQXcyjl0
まだ解決してなかったのか。。。
prepareToPlayで解決すると思うんだが>>824のやり方がマズイのは理解して修正したの?
OpenALでも事前にロードしておいてイベント発生時はそれを鳴らすだけなのは同じ

とりあえず問題が発生する最小限のコードを提示してよ

833名称未設定2018/02/22(木) 12:51:34.06ID:70yFcdMW0
大体OpenALみたいな手合は複数インスタンス作って
それぞれで勝手に鳴らす作りになってると思う
全く試してねーけど

8348192018/02/22(木) 15:03:06.51ID:oyxu6a/s0
//あらかじめ効果音ファイルを読み込んでおく
// OpneALデバイスを開く
ALCdevice* device;
device = alcOpenDevice(NULL);

// OpenALコンテキスを作成して、カレントにする
ALCcontext* alContext;
alContext = alcCreateContext(device, NULL);
alcMakeContextCurrent(alContext);

// バッファとソースを作成する
alGenBuffers(10, _buffers);
alGenSources(10, _sources);

8358192018/02/22(木) 15:04:17.77ID:oyxu6a/s0
int i;
for (i = 0; i < 10; i++) {
// サウンドファイルパスを取得する
NSString* fileName = nil;
NSString* path;
switch (i) {
case 0: fileName = @"0"; break;
case 1: fileName = @"1"; break;
case 2: fileName = @"2"; break;
case 3: fileName = @"3"; break;
case 4: fileName = @"4"; break;
case 5: fileName = @"5"; break;
case 6: fileName = @"6"; break;
case 7: fileName = @"7"; break;
case 8: fileName = @"8"; break;
case 9: fileName = @"9"; break;
}

8368192018/02/22(木) 15:04:50.68ID:oyxu6a/s0
path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"caf"];

// オーディオデータを取得する
void* audioData;
ALsizei dataSize;
ALenum dataFormat;
ALsizei sampleRate;
audioData = GetOpenALAudioData(
(CFURLRef)[NSURL fileURLWithPath:path], &dataSize, &dataFormat, &sampleRate);

// データをバッファに設定する
alBufferData(_buffers[i], dataFormat, audioData, dataSize, sampleRate);

// バッファをソースに設定する
alSourcei(_sources[i], AL_BUFFER, _buffers[i]);
}

8378192018/02/22(木) 15:05:25.02ID:oyxu6a/s0
-(void)openal_playsound:(int)_index {
// オーディオを再生する
alSourcePlay(_sources[_index]);
}


if (当たったら) {
[self openal_playsound:1];
}

当たり判定はUIDynamicAnimator、UICollisionBehaviorで行なっています。

短い時間で連続で複数にヒットすると効果音がヒットした数より少なく鳴ります。
画面はスムーズです。

Avaudioplayer時は連続で効果音が鳴っていました。ただ、画面がカクカクします。

838名称未設定2018/02/22(木) 17:21:14.16ID:TDQXcyjl0
あー、再生中のsourceに対してalSourcePlayすると最初から再生しなおすから
間隔が短くて1回しか聞こえない感じになってるっぽいね
複数sourceの同時再生はできるけど一つのsourceの同時再生はできないよ

キューを使うかイベント発生時に再生中でないsourceを使うようにするかかな

8398192018/02/22(木) 19:26:49.26ID:oyxu6a/s0
>>838
効果音の再生手段はOpenALのままで、
あらかじめ複数の効果音を読み込んで再生するのではなく、毎回効果音を読み込んで再生するように変更しました。
毎回読み込むことで、同じ効果音でも別扱いになるので、重なって鳴らしてもうまく鳴りました。
画面のカクカクは、毎回読み込む方式に変更しても変わりなく軽いです。
色々アドバイスいただきまして、ありがとうございました。

840名称未設定2018/02/22(木) 20:48:47.27ID:TDQXcyjl0
バッファに読み込むのは事前にやっておいて
イベント発生時にsourceのプールから使用中でないのを取得して
それにバッファを紐付けてからalSourcePlayね

↓この辺見て
https://books.google.co.jp/books?id=QoxeAqTvevIC&pg=PA394
https://vimeo.com/6440991

新着レスの表示
レスを投稿する