Con la nuova xcode7 Apple ha introdotto farmaci generici e annullabilità per Objective-C (Developer guide)Come utilizzare correttamente i generici su obj-c?
ma sembra essere molto diverso da quello che abbiamo sul veloce.
Nullability:
- (nonnull NSString *)something {
return nil;
}
Questo dovrebbe sollevare un avvertimento! E si può anche assegnare il valore di ritorno di questo metodo per un nonnull
variabile come:
//@property (copy, nonnull) NSString *name
obj.name = [obj something];
Generics: Guardando questo esempio:
@property (nonatomic, strong, nonnull) NSMutableArray <UIView *> *someViews;
un messaggio di avviso viene generato quando qualcosa di diverso da un UIView è inserito nell'array
[self.someViews addObject:@"foobar"]; //<- this raises an error
ma non in questo caso:
self.someViews = [@[@"foobar"] mutableCopy];
né in questo caso:
NSString *str = [self.someViews firstObject];
Quindi la domanda è, sto usando farmaci generici e nullability in modo sbagliato o sono lontani dalla realizzazione Swift?
sembra che non ci sia un uso "corretto" di generici e nullability. Offrono solo alcuni avvisi nel caso specifico e sono più utili per comunicare l'intento dello sviluppatore. – IgnazioC
Penso che dovrebbe essere una richiesta di funzionalità in quanto sembra il tipo di cose che l'analizzatore statico può catturare. – Moxy