J'ai une classe 'DOInstance' dont j'hériterai plus tard. Voici sa déclaration:Objectif C: avertissement sur l'annulation de l'init
@interface DOInstance : NSObject {
}
- (DOInstance *) initWithSynckey:(NSString *)_synckey;
@end
Puis j'ai une sous-classe de DOInstance:
@interface Workflow_Workitem_Header_1px: DOInstance {
}
//- (Workflow_Workitem_Header_1px *) initWithSynckey:(NSString *)_synckey;
@end
j'aller de l'avant et mettre en œuvre dans le fichier de mise en œuvre:
- (Workflow_Workitem_Header_1px *) initWithSynckey:(NSString *)_synckey {
[super initWithSynckey:_synckey];
//..
//..
return self;
}
Maintenant, si je ne déclare initWithSynckey: (la déclaration commentée ci-dessus) dans ma déclaration de sous-classe, j'obtiens un avertissement à l'implémentation: "warning: initialisation à partir du type Objective-C distinct". Si je le déclare, cet avertissement disparaît. D'accord.
Déplacement sur:
Je fais plus tard une instanciation de ma sous-classe:
Workflow_Workitem_Header_1px *instance;
instance = [[Workflow_Workitem_Header_1px alloc] initWithSynckey:@"xxxx"];
Maintenant, cela me donne le même avertissement (quel que soit si je déclare la initWithSynckey correspondante: sélecteur dans mon A savoir la sous-classe, "avertissement: initialisation à partir distincte de type Objective-C"..
Qu'est-ce que je fais mal
Oui, je sais que la sous-classe a un nom étrange. Bien qu'il soit écrit à la main actuellement, je m'attends plus tard à ce que la sous-classe soit «générée» en fonction de certaines métadonnées. – ArjunShankar
Donc quand vous instanciez Workflow_Workitem_Header_1px je pense qu'il renvoie déjà le pointeur, donc vous pouvez retirer l'étoile: Workflow_Workitem_Header_1px instance = [[Workflow_Workitem_Header_1px alloc] initWithSynckey: @ "xxxx"]; Est-ce que cela fonctionne? Vous pouvez également essayer de remplacer la valeur de retour du constructeur (Workflow_Workitem_Header_1px *) par id. – Ronald
Vous devez _always_ utiliser des pointeurs avec des classes Objective-C. En fait, vous ne pouvez pas les utiliser, car le compilateur vous dira "error: instance allouée statiquement de la classe Objective-C 'NSString'" ou autre. –