2012-03-11 25 views
6

पूरा कोड खंड निम्नलिखित शामिल हैं:CALayer renderInContext: अज्ञात दुर्घटना के कारण

[webview.layer renderInContext:UIGraphicsGetCurrentContext()]; 

अनुप्रयोग के साथ दुर्घटनाओं:

CGSize layerSize = [webview sizeThatFits:CGSizeZero]; 

    if ([UIScreen instancesRespondToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0f) { 
     UIGraphicsBeginImageContextWithOptions(layerSize, NO, 2.0f); 
    } 
    else { 
      UIGraphicsBeginImageContext(layerSize); 
    } 

    [webview.layer renderInContext:UIGraphicsGetCurrentContext()]; 

    screenshot = UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

लेकिन परीक्षण के बाद, इस लाइन समस्या खड़ी कर रहा है कंसोल में सूचीबद्ध कोई कारण नहीं है, और @try @catch @finally का उपयोग करके कुछ भी नहीं आता है। मैंने AppDelegate.h में क्वार्ट्जकोर आयात किया है, अगर इसका इसके साथ कुछ लेना देना है। ऐप सिम्युलेटर में ठीक काम करता है, लेकिन वास्तविक डिवाइस पर चलने पर दुर्घटनाग्रस्त हो जाता है।

+1

क्रैश कोशिश? क्या कंसोल कुछ प्रिंट करता है? क्या यह EXC_BAD_ACCESS है, या SIGABRT, या एक NSException थ्रो? – CodaFi

+0

कंसोल कुछ भी प्रिंट नहीं करता है, और एक्सकोड में कुछ भी पॉप अप नहीं होता है। मैं बस क्या हो रहा है पर पूरी तरह उलझन में हूं, इसलिए मैं सोच रहा था कि क्या मैं कुछ गलत कर रहा था। – Greg

+0

ठीक उसी समस्या को मिला – niklassaers

उत्तर

3

@ ग्रेग: डिवाइस पर मेमोरी ओवरफ्लो इश्यू की तरह लगता है क्योंकि डिवाइस मेमोरी बाधित है, जबकि सिम्युलेटर विभिन्न मेमोरी कॉन्फ़िगरेशन के साथ चलता है, मैं उसी में दौड़ रहा हूं - यह लंबे वेब पेजों के लिए हो सकता है, किसी भी विचार को हल करने का तरीका क्या है?

कोई भी अधिकतम चौड़ाई और ऊंचाई क्या है [CALAYer renderInContext] क्रैश होने से पहले वास्तविक डिवाइस (आईफोन रेटिना या गैर-रेटिना) पर संभाल सकता है?

+0

मुझे साझा करें, मुझे कुछ समस्या भी है, लेकिन यह समस्या केवल क्षैतिज मोड में आ रही है, – Sabareesh

+0

कैसे आती है यह स्वीकार्य उत्तर है? –

0

क्या साथ

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();