Pointeur manque une possibilité de valeur null spécificateur de type
Dans Xcode 7 GM j'ai commencé à avoir cet avertissement:
Pointeur manque une possibilité de valeur null spécificateur de type (_Nonnull, _Nullable, ou _Null_unspecified)
Dans la déclaration de fonction suivant (NSUserDefaults extension)
- (void)setObject:(nullable id)value
forKey:(NSString *)defaultName
objectChanged:(void(^)(NSUserDefaults *userDefaults, id value))changeHandler
objectRamains:(void(^)(NSUserDefaults *userDefaults, id value))remainHandler;
Pourquoi cet avertissement est de montrer et comment dois-je y remédier?
Vous devez vous connecter pour publier un commentaire.
Vous devez spécifier
nullable
également pour les gestionnaires/blocsPourquoi? C'est en raison de Swift. Swift permet paramètres facultatifs (?), qui Objective-C ne l'est pas. Ceci est fait comme un pont entre les deux, pour la Swift compilateur pour connaître ces paramètres sont optionnels. Un 'Non' de dire le Swift compilateur que l'argument est requis. Nullable qu'il est facultatif
Pour plus d'info lire:
https://developer.apple.com/swift/blog/?id=25
Vous pouvez utiliser les macros suivantes autour de blocs de déclarations de variables et de fonctions) en objective-c en-têtes:
Vous devez ensuite ajouter nullable annotations pour les références qui peut être nul à l'intérieur de ce bloc. Cela s'applique à la fois les paramètres de la fonction et des déclarations de variables.
Comme dans:
Modifier* Le pourquoi??? est parce que, pour un objectif-c classe pour être interopérable avec swift, vous devez déclarer la possibilité de valeur null pour que le compilateur sait traiter les propriétés swift options ou pas. Nullable objectif c propriétés sont connus comme des options rapide et l'utilisation de ces macros en collaboration avec le nullable declarators pour les propriétés permet au compilateur de les traiter comme des options (Options sont les monades - un objet qui encapsule l'objet ou nul).
Le bon, la méthode de travail de la déclaration, accepté par le compilateur:
Je poste cette réponse de dire pourquoi devrait ajouter
_Nonnull
ounullable
.Selon ce blog: https://developer.apple.com/swift/blog/?id=25
c'est pour Swift.