【swift1.1】6000行から2200行まで縮小成功
色々分割してようやくメインのViewControllerを6000行から2200行程度まで減らすことが出来ました。
6000行のときはちょっとコピーアンドペーストするだけで7,8秒程度の停止時間があってとても作業出来るような状態では無かったのですが、現在はほぼ停止時間なしにコードを記述出来るようになりました。
これでかなり作業が捗ります。このままの勢いを維持して今週中にアップルに申請まで行く予定です。更にその3「車内」の作業にも取り掛かる予定です。
ファイル分割構成はこんな感じになりました。更に次回作を作成するときは基本的にGameDataフォルダ内のみを書き換えて、他のファイルは操作する必要がない様にしています。今後の作業効率は上がるはずです。本来はゲーム制作よりもテンプレート?とかフレームワーク?のような物の方が好きなんです。過去に作ったシンプルフレームワーク(笑)のようなものとか。まあ一番興味があるのはAIですが!資金という名の生活費が欲しい。。。
さて、それはさておき前作の浴室のコードを見直したところなんと1ファイルに10000行超のコードを記述しておりました。重いと思っていましたが、Objective-cって軽いんですね。
というよりもどういう構成が最も効率よくソフトウェアを作れるかをアップル側が提案してくれればありがたいのですが。。。MVC構成なんてよく言われますが具体的にどのように処理を分けてどのようにコードを記述するのがベターなのか効率、速さ、安定性等の見地から提案してほしいものです。
そう考えるとアマゾンAPIのベストプラクティスってすごく親切だったんですね。問い合わせても毎度丁寧で具体的な返答が返ってきましたし、比較して初めて気づくことってありますよね。
【swift1.1】シーカー、プログレス、インジゲーター、スピナー呼び方多いですね
// 生成
let indicator:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .WhiteLarge)
indicator.center = self.view.center
self.view.addSubview(indicator)
// 回転スタート
indicator.startAnimating()
// 回転ストップ
indicator.stopAnimating()
呼び方が多くて見つけにくかったのでメモしておきます。
ちなみにactivityIndicatorStyleは3種類から少しは増えてるかな?と思ったらやっぱり3種類のままでした。なぜなのか。
【swift1.1】分けたファイルからAVAudioPlayerの操作がやっと出来ました
ファイル分割作業を進めている中でビューの操作は出来るようになったのですが今度は音の操作で詰まってしまいました。別ファイルにコードを記述して音再生をしたいのですがうまく行きません。
どうやらポイントは2つで
・var audioPlayer: AVAudioPlayer?をメンバ変数(プロパティ)にしておく
・呼び出す側でもクラスをプロパティとしてインスタンス化する
↑※とにかくメソッドの中に入れずにクラスの直下で変数化しておくイメージです。
●したいこと
1.音声再生の部分(AVAudioPlayer)を別ファイルにしたい。
2.1.で作ったファイルを別のファイルで呼び出してViewController(デフォルトのファイル)以外でも使用できるようにしたい。
そして・・・
★音再生用の専用ファイル
import AVFoundation //ここでは必須(他の2ファイルはいらない)
class soundPlay: NSObject {
var audioPlayer: AVAudioPlayer? //プロパティのところに記述(※重要)
func playsound(file: NSString){
let SN = NSURL(fileURLWithPath:NSBundle.mainBundle().pathForResource(file, ofType: "mp3")!)
audioPlayer = AVAudioPlayer(contentsOfURL: SN, error: nil)
if let sound = audioPlayer {
sound.prepareToPlay()
sound.play()
}
}
}
★メインでない別ファイル
class subView: NSObject {
//soundPlayクラスをインスタンス化(上で作ったやつ)
var SP: soundPlay = soundPlay() //これをプロパティのところに記述(※重要)
func testPlay(){
SP.playsound("sound") //例:sound.mp3を鳴らしたい時
}
}
★メインのファイル(ViewController.swift)
//subViewクラスをインスタンス化(上で作ったやつ)
var subV: subView = subView() //これをプロパティのところに記述(※重要)
override func viewDidLoad() {
super.viewDidLoad()
subV.testPlay() //実行したいサブビューを記述
}
これでもう当面は憂いなくガンガンファイルの分割化作業が捗るでしょう!
余談ですが、キータとやらに書いてデビューしようかとも思いましたがswift1.1では余り需要が無さそうなのでやめておきました。
【swift】分けたファイルからUIViewの追加は出来ないと思いこんでました
今までメインのクラスからじゃないとビューを追加することは出来ないと思いこんでいましたが、呼び出すクラス側にメインのself.viewを引き継げば簡単にビューの操作できるんですね。
●ファイルを分けた別クラスの記述
class class2: NSObject {
func test(main:UIView){
let l = UILabel(frame: CGRectMake(0, 100, 100, 50));
l.text = "テスト";
main.addSubview(l)
}
}
●メインのクラス
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let TestClass: class2 = class2()
TestClass.test(self.view)
}
}
こういうことに気付けるかどうかってもう本当にセンスですよね。こういうのって実はものすごく大事な事ですがプログラミング関連の本を読んでもまず書いてることはなくて自分で気づくか他人のコードをみて気づくか検索して地道に見つけるしか無いんですよね。
今回はたまたま検索エンジンに「addSubview ファイル分け」のワードで引っかかってくれましたが以前に検索したときは上記のワードが思いつかなくて見つけられず出来ないものだと思いこんでいました。
質問サイトで質問するという選択肢もありますが、答えが返ってこないことや何故か突然怒られた上に求めている事とは異なった回答が返ってくる事がよくあるのでついつい敬遠しがちです。それでも本来はすぐに質問したほうが合理的なんですけどね。
それはさておき、これで1ファイルのコード量を劇的に減らすことができそうです。ということでもうひと頑張りします!
今回みたいなので良いと思う=>IQ246
古畑任三郎と科捜研の女と相棒とポアロを足して4で割ったと巷で噂になっている某ドラマですが前回とは変わって今回は悪くなかったですね。
そんなに入り組んだ話にする必要はないんですよね。2時間サスペンスドラマをギュッと短くしてそれっぽいエッセンスを混ぜるだけで全然問題ないです。最近はドクターXとこれだけ見てるので次回も同じくらいのクオリティを期待してます。特にお色気シーンを。
ところで今回ホウモンジが途中でリーマン予想がどうのこうの言ってましたが、あれは人によってはそのくらいすごいと受け取るよりもあれ?強がってるの?と受け取ってしまいますよね。
リーマン予想って人類史上最高レベルの天才複数人が挑戦してもいまだ証明されず、更に一部の数学者の人生さえ狂わせた難問揃いのミレニアム問題の中でも最重要レベルの難問なんですよね。そういう背景を知っているとホウモンジがちょっと陳腐に感じてしまう反面可愛げがあるようにも感じてしまいました。

