2016-10-30 5 views
-1

zu EXC_BAD_ACCESS Wenn ich dies:didSet führt

fileprivate var _saved = false 
    open var lat = 0.0 { 
     didSet { 
      _saved = false 
     } 
    } 

zu EXC_BAD_ACCESS führt

für

moobj.lat = 0.0

aber einfach open var lat = 0.0 sieht gut aus. keine Fehler. Warum?

Antwort

0

Nach einigen Stunden und mehreren Umbauten/Neustart verschwand das Problem. Ich kenne den Grund nicht. Imo, Fehler von XCode.

1

Ich denke, die Antwort ist:

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html

Blick insbesondere auf dem Abschnitt mit dem Titel "Prinzip der Zugriffsebenen Guiding", die die beiden folgenden Punkte enthält:

i. Eine öffentliche Variable kann nicht als interner, file-privater oder privater Typ definiert werden, da der Typ möglicherweise nicht überall verfügbar ist, wenn die öffentliche Variable verwendet wird.

ii. Eine Funktion kann keine höhere Zugriffsebene haben als ihre Parametertypen und den Rückgabetyp, da die Funktion in Situationen verwendet werden kann, in denen ihre Konstituenten nicht für den umgebenden Code verfügbar sind.

Ich denke, Ihr Code fällt unter die zweite Bedingung, da der Parameter für die Beobachterfunktion didSet geöffnet ist, aber die Funktion selbst versucht, eine Dateiprivatvariable zu ändern.

Verwandte Themen