2012-08-01 16 views
6

में एक आवृत्ति चर बदलना मैं ब्लॉक के अंदर एक आवृत्ति चर को बदलने के बारे में काफी उलझन में हूं।ब्लॉक

इंटरफ़ेस फ़ाइल (ज):

@interface TPFavoritesViewController : UIViewController { 
    bool refreshing; 
} 

कार्यान्वयन:

__weak TPFavoritesViewController *temp_self = self; 
refreshing = NO; 
[myTableView addPullToRefreshWithActionHandler:^{ 
    refreshing = YES; 
    [temp_self refresh]; 
}]; 

आप अनुमान लगा सकते हैं, मैं एक है जब मैं के अंदर ताज़ा इवर बदलने की कोशिश चक्र चेतावनी को बनाए रखने खंड। त्रुटि के बिना मैं यह कैसे करूं?

self->refreshing = YES; 

इसलिए चक्र चेतावनी:

उत्तर

6

refreshing करने के लिए अपने काम self को एक अंतर्निहित संदर्भ है, यह के लिए आशुलिपि है। इसे बदलें:

temp_self->refreshing = YES; 
+2

यह केवल इस कोड के साथ नहीं बनाता है। मुझे निम्न त्रुटि मिलती है: रेस स्थिति के कारण संभावित शून्य मूल्य के कारण __weak को अस्वीकार करने की अनुमति नहीं है, इसे पहले एक मजबूत चर को असाइन करें। मुझे लगता है कि मैंने इसे जोड़कर काम किया है: __strong TPRideListView * strong_self = temp_self; strong_self-> रीफ्रेशिंग = हाँ; –

+0

सावधान; एक कमजोर सूचक के संदर्भ में दुर्घटनाओं का कारण बन सकता है। ब्लॉक के अंदर कमजोर व्यक्ति से एक मजबूत सूचक बनाने के लिए बेहतर, शून्य के लिए जांचें, और इसका उपयोग करें। –

+0

@ केयरनपास्टर - क्षमाप्रार्थी मुझे दूसरी चेतावनी याद आई; यदि आपका कोड चेतावनी को ठीक से रखता है, तो आप इसे काम कर रहे हैं * प्रदान की गई * आपकी वस्तु आसपास रह रही है (यानी 'स्वयं' मान्य है); कोड 'शून्य' मान की संभावना से निपटता नहीं है। मुझे लगता है कि आप जानते हैं कि यह है, अगर आप नहीं ... – CRD