2017-06-15 1 views
0

dans le fichier .h:Que signifie cette déclaration?

@interface HitTestTool : NSObject 

CGRect HitTestingBounds(CGRect bounds, CGFloat minimumHitTestWidth, CGFloat minimumHitTestHeight); 

@end 

et dans le fichier .m:

@implementation HitTestTool 

CGRect HitTestingBounds(CGRect bounds, CGFloat minimumHitTestWidth, CGFloat minimumHitTestHeight) { 

    CGRect hitTestingBounds = bounds; 

    if (minimumHitTestWidth > bounds.size.width) { 
     hitTestingBounds.size.width = minimumHitTestWidth; 
     hitTestingBounds.origin.x -= (hitTestingBounds.size.width - bounds.size.width)/2; 
    } 

    if (minimumHitTestHeight > bounds.size.height) { 
     hitTestingBounds.size.height = minimumHitTestHeight; 
     hitTestingBounds.origin.y -= (hitTestingBounds.size.height - bounds.size.height)/2; 
    } 

    return hitTestingBounds; 
} 

donc je suis si confus, est qu'une méthode ou une propriété je n'ai jamais vu cela auparavant?.

il semble comme une méthode, mais le format est comme:

- (void) foo; 

ou une propriété comme:

@property (nonatomic,strong) some property; 

comme ça, non?

alors comment écrire la méthode CGRect?

+0

Cela ressemble à une déclaration mal placée (et mise en œuvre) d'un fémi fonction. Vous pouvez le déplacer librement hors des blocs '@ interface' et' @ implementation'. – Eimantas

+0

ressemble à une fonction ANSI-C standard pour moi, comme vous le savez l'Objective-C est un sous-ensemble de ANSI-C, donc les solutions ANSI-C standard pourraient être les bienvenues ici. – holex

+0

@Eimantas merci – Neko

Répondre

1

Ici CGRect HitTestingBounds(CGRect bounds, CGFloat minimumHitTestWidth, CGFloat minimumHitTestHeight); est une fonction et non une propriété.

fonctions sont des blocs de code qui ne sont pas liés à un objet/classe, vient d'hériter de C. Mais les méthodes sont attachés à la classe/instance (objet)