2017-01-05 8 views
0

Swiftで独自のクラスを作成して、オブジェクトインスタンスを生成できる初心者のチュートリアルを徹底的に楽しんだので、私はAppleのCocoa Touch APIを使い始めるためにこの知識を積み重ねることでより良くなることを期待しています。しかし、UIViewController、UIResponder、UITouchなどのクラス参照を読んでいるうちに、これらのクラスにインスタンスを生成するinit関数がないことに気付きました。私はこれをすべて間違って考えていますか?あるいは、これらのクラスがサブクラス化されることを前提とするのは安全でしょうか?そして、それらがサブクラス化されることを意図されている場合は、インスタンスを生成して使用するために、独自のinit関数を記述する必要がありますか?UITouchクラスにinit関数がありません

私はAppleの抽象的なレシピ(クラス参照ドキュメント)を遵守し、文字列、ダブルスなどの必要な型を配置する限り、私が好きなものを構築することができる小さなレゴを考えています。 、整数などを正しい場所に置いてオブジェクトを生き生きとさせる。私はこれについてAppleのオブジェクトに関して正しく考えていますか?

は、ここで私は、私がこのタイプと私はレゴの観点で考えている理由のオブジェクトを生成できるinit関数を持っているチュートリアル今日でやったことの一例です:

struct Location: Equatable { 

    let name: String 

    let coordinate: CLLocationCoordinate2D? 

    init(name: String, coordinate: CLLocationCoordinate2D? = nil) { 
     self.name = name 
     self.coordinate = coordinate 
    } 

} 

私が読んで迅速なプログラミングガイドと一般的な理解を持っています。私はココアタッチを楽しむことができるようになるため、できるだけ早く興奮しています。

私はノブで、おそらくキーボードに触れてはいけない馬鹿だと知っていますので、事前に説明をお願いします。

+1

私は、3つのクラスのそれぞれをGoogleに示唆し、検索リターンのdeveloper.apple.comリンクをクリックすることをお勧めします。アップルは、UIViewControllerと他の2つのUIViewControllerがどう違うかを説明し、直接UIViewControllerのインスタンスを作成する方法を追加し、UIResponderが実際にUIApplicationとUIViewのスーパークラスである方法を追加します。あなたがUIKit(Cocoa Touch)を「Apple」の方法で使用していることを把握していないような気がします。そして正直言って、あなたが仕事をする "アップル"の方法をもっと早く学ぶほど、より良いことができます。がんばろう! – dfd

答えて

1

UIViewControllerは、initの方法があります。あなたがあなた自身のインスタンスを作成することになっていないので、UITouchよう

クラスは、任意の公共initメソッドを持っていません。

UIViewControllerのようなクラスは、サブクラス化されることを意味します。 UIViewControllerのインスタンスを直接使用するのは一般的ではありません。

Swiftでは、独自のinitメソッドを明示的に追加しない限り、どのサブクラスも親クラスのinitメソッドを取得することを忘れないでください。次に、サブクラスに明示的に追加するメソッドがinitしかありません。

関連する問題