2015-04-09 17 views

Odpowiedz

11

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!

+0

W zasadzie; te atrybuty są używane tylko w kontekście Swift, prawda? –

+2

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

Powiązane problemy