2012-03-22 21 views
11

मेरा प्रश्न है: NSIndexPath प्रोग्रामेटिक रूप से कैसे सेट करें।प्रोग्राम NSMndexPath प्रोग्रामेटिक रूप से

उदाहरण के लिए मैं जोड़ने विधि:

- (void)setDefaultValue{ 
tempIndexPath = [NSIndexPath indexPathForRow:0 inSection:1]; 
} 

tableView प्रतिनिधि में -cellForRowAtIndexPath तुलना करना चाहता हूं दो indexPath

अगर ([indexPath isEqual: tempIndexPath]) ...

लेकिन इस मामले में मेरा tempIndexPath = null (मुझे लगता है - क्योंकि यह autorelease ऑब्जेक्ट है)

इस मामले में NSIndexPath कैसे सेट करें?

धन्यवाद, सब!

उत्तर

16

जोड़ें बनाए रखने

- (void)setDefaultValue{ 
    tempIndexPath = [[NSIndexPath indexPathForRow:0 inSection:1] retain]; 
} 

लेकिन आप भविष्य में रिलीज temIndexPath के बारे में पता होना चाहिए।

संपादित करें: मैंने खराब विकल्प हटा दिया है।

+0

किसी ऑब्जेक्ट को बनाए रखने के लिए एक संपत्ति बनाना मुझे लगता है कि यह समस्या का अतिसंवेदनशीलता है। इसके अलावा सदस्य को वर्ग के बाहर से सुलभ बनाने का प्रभाव (पक्ष) प्रभाव है, जो अवांछनीय हो सकता है, विशेष रूप से यह मानते हुए कि हम "अस्थायी" सदस्य के बारे में बात कर रहे हैं ... – Saphrosit

+0

@ सफ़्रोसिट, आप सही हैं। उत्तर संपादित किया गया – LuisEspinoza

2

सीधे शब्दों में retain फोन के बाद आप इसे instantiated:

[tempIndexPath retain]; 

यह आपको वस्तु का मालिक हो जाएंगी, ताकि release को यह याद है जब आप किया है।

1

आपको इसे आवंटित करना होगा और इसे बाद में रिलीज़ करना होगा, इसे परिभाषित करना होगा जिस तरह से आपने एक ऑटोरेलेज्ड ऑब्जेक्ट लौटाया है।

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