2009-05-22 3 views
128

मेरे पास लगभग 50 CGPoint ऑब्जेक्ट्स हैं जो "पथ" की तरह कुछ वर्णन करते हैं, और मैं उन्हें एनएसएआरएआरई में जोड़ना चाहता हूं। यह एक ऐसा तरीका होगा जो किसी दिए गए इंडेक्स के लिए संबंधित CGPoint को वापस कर देगा। मैं 50 चर बनाने के लिए नहीं चाहता जैसे कि पी 1 = ...; पी 2 = ..., और इसी तरह। क्या कोई आसान तरीका है जो मुझे वस्तुओं के साथ एनएसएआरएआरई शुरू करते समय "तुरंत" उन बिंदुओं को परिभाषित करने देता है?मैं एनएसएआरएआरई को आसान तरीके से CGPoint ऑब्जेक्ट्स कैसे जोड़ सकता हूं?

उत्तर

317

UIKit के साथ एप्पल NSValue को CGPoint के लिए समर्थन जोड़ा है, तो आप कर सकते हैं:

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

+2

स्केलर प्रकारों के लिए, एनएसएनंबर पर एक नज़र डालें ... आपको नंबरविथबूल जैसे कन्स्ट्रक्टर दिखाई देंगे: संख्या विथ इंटेगर: संख्या विथफ्लैट :, संख्याविथअनुवादित शॉर्ट :, आदि –

+4

वैकल्पिक रूप से आप सीधे NSValue का उपयोग कर सकते हैं: [NSValue valueWithBytes: & someStructSockaddr objCType: @encode (struct sockaddr)] उदाहरण के लिए। –

2

आप CFMutableArray पर एक नज़र उठाया है? यह आपके लिए बेहतर काम कर सकता है।

7

मैं का उपयोग करें:

सरणी बनाएँ:

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

जाओ 1 CGPoint वस्तु:

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

तुम भी एक मानक सी में यह लिख सकते हैं/C++ रास्ता:

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

CGPoint p2 = oldschool[1];