swift言語のAVAudioPlayerの使い方が分かりません.
1つ目のコードではAVAudioPlayerのインスタンスを生成した後に,音楽ファイルを指定しています.
しかし,AVAudioPlayerはイニシャライザとして「contentsOf:」を設けているので,インスタンス生成時に引数を渡す必要があると認識しています.
ど素人が,クラスが引数付きのイニシャライザを宣言しているにも関わらず,引数なしでインスタンスを生成した後に,引数ありのインスタンスを代入する
という観点からみれば2つ目のコードと同じことをしているのではないかと思ってしまうのですが,もちろん間違っていることはわかります.
では,なぜ1つ目のコードにあるように,AVAudioPlayerは,引数付きのイニシャライザを宣言しているにも関わらず,引数なしのインスタンスを生成できる
のでしょか
プログラミング初心者の自分でもわかるよう教えていただけると助かります.
swift
import UIKit import AVFoundation class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } let cymbalPath = Bundle.main.bundleURL.appendingPathComponent("cymbal.mp3") //////////ここでインスタンスを生成////////// var cymbalPlayer = AVAudioPlayer() @IBAction func cymbal(_ sender: Any) { do { //////////ここでイニシャライザを指定////////// cymbalPlayer = try AVAudioPlayer(contentsOf: cymbalPath, fileTypeHint: nil) cymbalPlayer.play() } catch { print("error") } } }
swift
class A { init(string: String){ } } var a = A() a = A(string: "~~~")
環境
xcode:10
swift:4.2
言葉足らずでしたらご指摘ください.
まだ回答がついていません
会員登録して回答してみよう