2009-06-03 32 views
1

好的,我仍然試圖在Objective-C中找到自己的方向,我認爲我已經完成了它,但現在我遇到了這種方法。所以有些事情讓我感到困惑,如果可能的話,我想詳細解釋一下。第一行:'UITouch * touch = [touches anyObject];',現在對我的理解anyObject是一個散列表?但是,如何在這種情況下定義它?我不明白的地方時,我知道它是屬於NSSet中定義的,但我很困惑,在此背景下,範圍...ccTouchesMoved [觸及anyObject]混淆?

- (BOOL)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    CGPoint point = [touch locationInView: [touch view]]; 

    point = [[Director sharedDirector] convertCoordinate: point]; 
    NSLog(@"ccTouchesMoved x=%f y=%f", point.x, point.y); 
    return YES; 

} 

回答

3

anyObject在這種情況下是NSSet的方法。爲什麼認爲它是一個哈希表? 它只是從set中返回一個對象 - 任何對象。

[touches anyObject]

調用上touches對象(例如,在其他語言的一個方法調用)anyObject方法,它從所述組返回一個對象。

NSTouch * touch = [touches anyObject]; 

touch是指向存儲在touchesNSSet)的對象之一。

從可可參考:

anyObject返回在接收器或零的對象 之一如果 接收機不包含任何對象。

- (id)anyObject

返回值中的一個,如果接收 不包含任何對象的 接收器,或無對象。返回的對象 在接收方的 方便處選擇 - 選擇不是 保證是隨機的。

+0

謝謝,我現在看到它...不知道爲什麼我認爲它是一個散列表... – emalamisura 2009-06-03 15:05:01

1

anyObject實際上是一個屬性。所以你可以使用:

NSTouch * touch = touches.anyObject; 

它的工作原理是一樣的。