0

Je suis porting le Official Apple Multipeer WiTap sample à Xamarin et C#, cependant je ne sais pas comment porter cette méthode dans TapViewController.Comment puis-je porter le code StrongDelegate ObjC sur C# MonoTouch?

Il contient toutes les choses que je ne suis pas sûr de savoir comment le port ... à savoir

  1. Un délégué qui est exprimé uniquement dans le code, et n'a pas délégué forte dans le cadre Xamarin. (C'est probablement facile, juste un concept qui me manque)
  2. Que diable est le id ici, et comment puis-je le déclarer/l'utiliser?
  3. Comment puis-je déclarer self.delegate;

Code:

- (IBAction)closeButtonAction:(id)sender 
{ 
    id <TapViewControllerDelegate> strongDelegate; 

    #pragma unused(sender) 
    strongDelegate = self.delegate; 
    if ([strongDelegate respondsToSelector:@selector(tapViewControllerDidClose:)]) { 
     [strongDelegate tapViewControllerDidClose:self]; 
    } 
} 

Voici un link to my code, où le port is in progress

+0

C'est-objectif c, pas rapide – dan

Répondre

1

Essayez-vous au port du code Objective-C à C# sans connaître le ancien?

  • id est « tout objet » du Obj-C, tandis que id<protocolName> est un objet qui met en œuvre le protocole spécifié. Un "délégué" Obj-C est juste un objet qui implémente un protocole donné, c'est la façon dont il est utilisé qui en fait un délégué. Les protocoles Objc-C et les interfaces C# sont des concepts correspondants. Donc strongDelegate est une variable dont le type est une interface C# (que vous avez vraisemblablement traduit du protocole Obj-C).
  • Déclarant self.delegate: c'est une référence de propriété Objc-C avec le même type (ou compatible) que strongDelegate. C# a des propriétés.
  • Le test if dans Obj-C détermine si l'objet référencé implémente la méthode spécifiée et, dans l'affirmative, l'invoque. Les protocoles Obj-C autorisent des méthodes facultatives, c'est-à-dire que les objets de méthodes implémentant le protocole n'ont pas besoin d'être implémentés. Les interfaces C# n'ont pas d'équivalent direct. Dans votre traduction du protocole Obj-C vers une interface C#, soit vous avez rendu toutes les méthodes facultatives non facultatives, soit vous avez fait autre chose. Traduire le if pour correspondre à tout ce que vous avez fait.

HTH