はあなたのコードの最初の2行です:
class ViewController: UIViewController {
let path = UIBezierPath()
は(class
で始まる)最初の行はViewController
という名前のクラスの定義を開始します。 2番目の行(let
で始まる)はpath
という名前のインスタンスプロパティを定義し、プログラムがViewController
のインスタンスを作成するたびに、式UIBezierPath()
を評価することによってpath
変数を初期化する必要があります。
path.move(to: .zero)
問題は、あなたがクラス定義で直接その行を記述しようとしているということです。
次に、あなたがこのような何かを書くことをしようとしています。できません。クラス定義に直接入れることができるのは、プロパティとメソッドの定義のみです。実行されるステートメントを置くことはできません。
あなたには2つの選択肢があります。 1つは後のメソッドでプロパティを初期化することです。たとえば、viewDidLoad
です。 Julian J. Tejeraの答えはこれをカバーしています。 self
は完全にそれたときに初期化されていないので、あなたがそのクロージャ内の任意ViewController
インスタンスのプロパティやメソッドを参照することができません
class ViewController: UIViewController {
let path: UIBezierPath = {
let path = UIBezierPath()
path.move(to: .zero)
path.addLine(to: CGPoint(x: 10, y: 0))
return path
}()
}
注:
それを行うための別の方法は、閉鎖を実行することにより、プロパティを初期化することです走る
私はこの問題について不明です。 UIBezierPath(ケース1)を初期化して**使用できない**と言っていますか?* .move(to:)*入力がCGPointの場合*どうして?できます。どうか明らかにしてください。ありがとう! – dfd
"。"を入力した後で、xcodeがUIBezierPath()のメソッドを推測したい場合は、 "パス"の後、あなたが望むものを得ることができません。あなたが追加した画像を見ることができます – user7341005