È possibile utilizzare le seguenti macro intorno blocchi di dichiarazioni (funzioni e variabili) in intestazioni obiettive c:
NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END
È necessario aggiungere quindi annotazioni annullabili per riferimenti che possono essere nulli all'interno di quel blocco. Questo vale sia per i parametri di funzione sia per le dichiarazioni variabili.
come in:
@interface SMLBaseUserDetailsVC : UIViewController < UICollectionViewDelegate>
NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly) IBOutlet UIScrollView *detailsScrollView;
@property (nonatomic, readonly) IBOutlet UICollectionView *photoCV;
@property (nonatomic, weak, readonly) SMLUser *user;
- (IBAction)flagUser:(id)sender;
- (IBAction)closeAction:(nullable id)sender;
- (void) prefetchPhotos;
NS_ASSUME_NONNULL_END
@end
Edit * Il perché ??? è perché per una classe ogg-c essere interoperabile con swift, è necessario dichiarare il nullability in modo che il compilatore sappia trattare le proprietà come swift optionals o meno. Le proprietà oggettive cnullabili sono conosciute come optionali in swift e l'uso di queste macro in congiunzione con i dichiaratori nullable per le proprietà consente al compilatore di considerarle come optionali (Optionals sono monadi - un oggetto che avvolge l'oggetto o nil).
Devo aggiungere che il compilatore è anche punti per specificare qualcosa per i parametri del blocco. – kelin
perché ????????????????? – mskw
Stai chiedendo perché è necessario specificarli? A causa dell'interoperabilità con il compilatore Swift. Determina se l'API è esposta come facoltativa o meno. Vedere il post del blog Apple qui: https://developer.apple.com/swift/blog/?id=25 – bandejapaisa