z Xcode 6.3 zauważyłem pewne atrybuty własności, a mianowicie:Co robią atrybuty właściwości związane z wartością zerową w XCode?
nonnull
null_resettable
nullable
Może ktoś wyjaśnić, co robią, kiedy stosować?
z Xcode 6.3 zauważyłem pewne atrybuty własności, a mianowicie:Co robią atrybuty właściwości związane z wartością zerową w XCode?
nonnull
null_resettable
nullable
Może ktoś wyjaśnić, co robią, kiedy stosować?
Apple dodał dwie nowe adnotacje typu: __nullable i __nonnull. __wymulowany wskaźnik może mieć wartość NULL lub zero, a __nonnull nie powinien mieć.
Powinieneś wiedzieć, że możesz używać opcji (?), Ale w Objective-C nie możesz. Atrybuty te pozwalają tworzyć objective-c kod, który jest bardziej zrozumiałe, szybka i kompilator cię ostrzec, gdy złamiesz zasady, na przykład:
@property (copy, nullable) NSString *name;
@property (copy, nonnull) NSArray *allItems;
To będzie „przetłumaczone” na szybkich do:
var name: String?
var allItems: [AnyObject]!
To jest wzięte z NSHipster:
niepustych: Wskazuje, że wskaźnik powinien/nigdy nie będzie zerowe. Wskaźniki oznaczone adnotacją nonnull są importowane do Swift jako ich nie-opcjonalna wartość podstawowa (tj. NSData).
zerowalny: Wskazuje, że wskaźnik może być zerowy w ogólnej praktyce. Zaimportowano do Swift jako wartość opcjonalną (NSURL?).
null_unspecified: Kontynuuje bieżącą funkcjonalność importowania do Swift jako nieopakowane opcje nieopakowane opcjonalnie, najlepiej do używane tylko podczas tego procesu adnotacji.
null_resettable: Wskazuje, że podczas gdy właściwość zawsze będzie miała wartość, można ją ustawić na , przypisując zero. Właściwości z zerową domyślną wartością mogą być z adnotacjami w ten sposób, jak tintColor. Zaimportowany do Swift jako opcjonalnie (względnie bezpieczny) nieopakowany. Dokument odpowiednio!
W zasadzie; te atrybuty są używane tylko w kontekście Swift, prawda? –
Głównie tak, ale otrzymasz ostrzeżenia kompilatora, jeśli spróbujesz przypisać wartość null do właściwości oznaczonej jako nonnull w Objective-C. – Greg