Ich versuche, den Klassenbereich innerhalb einer Funktion zu beschränken. Dies scheint zu funktionieren:Die Verwendung von @lazy-Eigenschaften in Funktionen führt zu Buildfehlern.
func foo() {
class MyClass {
var s = ""
}
}
Ich kann Instanzen von MyClass innerhalb der Funktion foo() erstellen.
Allerdings, wenn ich die @lazy Spezifizierer auf eine Eigenschaft hinzuzufügen versuchen ...
func foo() {
class MyClass {
@lazy var s = ""
}
}
... Ich werde nach dem Fehler bauen:
- Global is external, but doesn't have external or weak linkage!
- invalid linkage type for function declaration
- LLVM ERROR: Broken module found, compilation aborted!
Hinweis: Wenn ich die Klasse aus dem Gültigkeitsbereich der Funktion verschiebe, kompiliert der Code:
class MyClass {
@lazy var s = ""
}
Warum ist dies nicht möglich, und wie sollte dieser Fehler behoben werden? Wenn es nicht gelöst werden kann, gibt es eine andere Möglichkeit, @lazy-Eigenschaften in Funktionen zu verwenden?
Haben Sie dies gemeldet? https://bugreport.apple.com/ – aleclarson
Ich hatte auch einige Probleme mit faul Vars verursacht Compiler Abstürze; in meinem Fall war es mit Protokollkonformität verbunden. Müssen Sie dieses Radar einlegen. : | – cmyr