2017-06-15 169 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.剛剛繼承但方法附加到類/實例(對象)