2009-05-22 43 views
128

我有大約50個描述類似「路徑」的CGPoint對象,我想將它們添加到NSArray中。這將是一種方法,將只返回給定索引的相應CGPoint。我不想創建50個變量,如p1 = ...; p2 = ...等等。有沒有一種簡單的方法可以讓我在用對象初始化NSArray時「立即」定義這些點?如何以簡單的方式將CGPoint對象添加到NSArray?

回答

317

隨着UIKit蘋果增加了支持CGPoint到NSValue,所以你可以做:

NSArray *points = [NSArray arrayWithObjects: 
        [NSValue valueWithCGPoint:CGPointMake(5.5, 6.6)], 
        [NSValue valueWithCGPoint:CGPointMake(7.7, 8.8)], 
        nil]; 

名單多達[NSValue]你有CGPoint實例,並結束在零列表。該結構中的所有對象都是自動釋放的。

在另一面,當你拉動值超出數組:

NSValue *val = [points objectAtIndex:0]; 
CGPoint p = [val CGPointValue]; 
+0

很酷。這對於任何類型的標量類型如何工作? – Thanks 2009-05-22 20:03:09

2

你已經採取了看看CFMutableArray?這可能對你更好。

7

我用這個:

創建數組:

NSArray *myArray = @[[NSValue valueWithCGPoint:CGPointMake(30.0, 150.0)],[NSValue valueWithCGPoint:CGPointMake(41.67, 145.19)]]; 

獲得第一個CGPoint對象:

CGPoint myPoint = [myArray[0] CGPointValue]; 
2

您也可以在一個標準的C寫/ C++方式:

CGPoint oldschool[] = { CGPointMake(5.5, 6.6), 
         CGPointMake(7.7, 8.8) }; 

CGPoint p2 = oldschool[1]; 
相關問題