2012-02-18 10 views
6

पहले iOS5 मैं इस तरह एक UIWebView के UIScrollView प्रतिनिधि पर पहुंच सकता था: अबमैं UIWebView की UIScrollView प्रतिनिधि संपत्ति को और क्यों स्टोर नहीं कर सकता?

for (id subview in webView1.subviews){ 
    if ([[subview class] isSubclassOfClass: [UIScrollView class]]) { 
     UIScrollView * s = (UIScrollView*)subview; 
     OldDelegate = s.delegate;//OldDelegate is type id 
        s.delegate = self; 
    } 
} 

, मैं यह करने के लिए सही तरीके से नहीं कर रहा है पता है कि है, लेकिन समय (जहाँ तक मैं समझ गया) में यह था ऐसा करने का एकमात्र तरीका। iOS 5 बदल गया है, तो मैं यह आईओएस 5 तरीके से करना कोशिश कर रहा हूँ:

UIScrollView * s = webView.scrollView; 
Olddelegate = s.delegate; 
s.delegate = self; 

लेकिन किसी भी तरह से मैं इसे करने की कोशिश, मेरे OldDelegate वस्तु के मूल्य 0x0 है। यह वास्तव में महत्वपूर्ण है कि मैं इस प्रतिनिधि मूल्य को बरकरार रखूं, लेकिन जितना संभव हो उतना प्रयास करें, मुझे बस 0x0 मिल रहा है।

कोई भी विचार?

मैं एआरसी का उपयोग नहीं कर रहा हूँ ...

+0

बस एक सवाल है, क्या आपने कभी ऐसा ऐप सबमिट किया है जो ऐसा कर रहा था? मैंने सोचा कि एप्पल द्वारा निषिद्ध है। मैं कुछ ऐसा करना चाहता हूं हालांकि मुझे नहीं पता कि यह ऐप को खारिज कर देगा या नहीं। –

+0

हाँ इसे अनुमोदित किया गया था, लेकिन अब यह एक अपडेट के लिए समय है, और मैं इसे काम नहीं कर सकता इसलिए मैं परेशानी में हूं ... – Lizza

+0

आपको अपने प्रतिनिधि को बनाए रखने की आवश्यकता क्यों है? यह आपके दृश्य पदानुक्रम का निर्माण करने के तरीके में एक बड़ी समस्या का सबूत है। प्रतिनिधियों को हमेशा कमज़ोर घोषित किया जाना चाहिए, क्योंकि उन्हें बनाए रखना समझ में नहीं आता है। – Sam

उत्तर

0

हाँ, अगर आपके का उपयोग कर चाप, संभव है कि आपकी unretained Olddelegate पर अपनी कर कचरा संग्रहण, तो आप फ़ाइल -fno- साथ चाप का उपयोग नहीं करने के लिए चिह्नित कर सकते हैं या तो objc-arc और बनाए रखने को संभालें और अपने आप को रिलीज़ करें जैसे आप करते थे। या आप वैरिएबल को बनाए रखने में मदद के लिए यहां वर्णित मजबूत संदर्भ लागू कर सकते हैं। https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

+0

उत्तर के लिए धन्यवाद, लेकिन मैं एआरसी का उपयोग नहीं कर रहा हूं ... – Lizza

+0

Olddelegate एक संपत्ति है | @property (nonatomic, बनाए रखें) NSObject * Olddelegate; –

+0

हां यह एक संपत्ति है – Lizza

1

scrollViewUIWebView की संपत्ति UIScrollView का उप-वर्ग है। _UIWebViewScrollView नामक यह निजी वर्ग delegate संपत्ति का उपयोग नहीं करता है, यह हमेशा शून्य है। हो सकता है कि आप कुछ रिफैक्टरिंग कर सकें और वास्तविक स्क्रॉलव्यू-प्रतिनिधि प्राप्त कर सकें, लेकिन मुझे लगभग 100% यकीन है कि सेब आपके ऐप को अस्वीकार कर देगा।

संबंधित मुद्दे