2017-06-15 129 views
0

在.h文件:这是什么声明?

@interface HitTestTool : NSObject 

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

@end 

,并在.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; 
} 

让我很困惑,是一个方法或属性我以前从未见过这个?

它似乎是一个方法,但正确的格式是这样的:

- (void) foo; 

或类似性质:

@property (nonatomic,strong) some property; 

这样的,对不对?

那么编写CGRect方法的方法是什么?

+0

这看起来像一个放错位置的声明(和执行)功能。你可以自由地将它从'@interface'和'@ implementation'块中移出。对于我来说, – Eimantas

+0

看起来像一个标准的ANSI-C函数,因为你知道Objective-C是ANSI-C的一个子集,所以标准的ANSI-C解决方案在这里非常受欢迎。 – holex

+0

@Eimantas谢谢 – Neko

回答

1

这里CGRect HitTestingBounds(CGRect bounds, CGFloat minimumHitTestWidth, CGFloat minimumHitTestHeight);是一种功能,而不是一种财产。

函数是代码块,使用无关的一个简单的C的对象/类,从C.刚刚继承但方法附加到类/实例(对象)