2012-08-07 15 views
6

मैं क्रम में CGRectMake() का उपयोग कर एक CGRect चर आरंभ करने के लिए इस विकल्प को देखा है:CGRectMake विकल्प

CGRect फ्रेम = (CGRect) {0,0,10,10};

मेरा सवाल है, CGRect frame = (CGRect){0,0,10,10}; कैसे काम करता है? दृश्यों के पीछे क्या चल रहा है? ऐसा लगता है कि एक सी-शैली सरणी शुरू की जा रही है ({x,y,w,h}) जिसे बाद में CGRect संरचना के रूप में डाला जा रहा है - क्या यह सही है? यदि हां, तो सी शैली सरणी को संरचना के रूप में कैसे डालना संभव है?

एनबी। मैं यह नहीं पूछ रहा हूं कि उपरोक्त विकल्प का उपयोग CGRectMake() पर करना उचित है, मैं केवल यह समझना चाहता हूं कि यह क्यों काम करता है।

+0

यह बस अगर दो बयानों बाइट्स की उसी क्रम बनाने के काम करता है। हालांकि, मैं उलझन में हूं कि आप 0.0 और 10.0 के बजाय 0 और 10 का उपयोग कर रहे हैं। 0 और 10 को पूर्णांक स्थिरांक के रूप में संकलित किया जाएगा और 0.0 और 10.0 एलएस फ्लोट/डबल स्थिरांक बाहर आ जाएगा। इसलिए मुझे संदेह है कि आप किसी भी उपयोगी के लिए एक कानूनी फ्रेम के रूप में फ्लोट का उपयोग कर सकते हैं। सीजीईजीईटी सीजीपीओटी और सीजीएसआईज से बना एक अनिच्छा है। उनमें से दोनों दो सीजीएफलोड सदस्यों (सीजीपीओटी के मामले में एक्स और वाई और सीजीएसआईज के मामले में चौड़ाई और ऊंचाई) से बने हैं। –

उत्तर

7

यह एक तथाकथित यौगिक शाब्दिक है। आप माइक एश द्वारा इस आलेख में उनके बारे में अधिक पढ़ सकते हैं: Friday Q&A 2011-02-18: Compound Literals

1

यू इस तरह उपयोग कर सकते हैं:

CGRect rect = CGRectFromString(@"{{0, 0}, {612, 892}}"); // it contents { CGPoint origin;CGSize size;}; 
NSLog(@"rect : %@",NSStringFromCGRect(rect)); 
1

चेक करें:

CGPoint origin = {10, 20}; 
CGSize size = {100, 200}; 
CGRect rect = {origin, size}; 
संबंधित मुद्दे