/ / जब दो लेआउट के बीच UISegmentedControl का उपयोग करके बहुत तेजी से टॉगल किया जाता है तो मुझे एक धागा मिलता है 1 exc_bad_access कोड = 2 त्रुटि - आईओएस, ऑब्जेक्टिव-सी, कोको-टच, uiview, uisegmentalcontrol

जब दो लेआउट्स के बीच UISegmentedControl का उपयोग करके बहुत तेजी से टॉगल किया जाता है तो मुझे एक धागा मिलता है 1 exc_bad_access कोड = 2 त्रुटि - आईओएस, ऑब्जेक्टिव-सी, कोको-टच, यूविवि, यूइसेक्टेरियोक्रोल

मैंने देखा कि मैं जल्दी से दो के बीच स्विच करके अपने ऐप में एक क्रैश बना सकता हूं UICollectionViewFlowLayout"मेरे एक सेगमेंट को टैप करके UISegmentedControl.

इस ईमेल में आई क्रैश त्रुटि

यहां छवि विवरण दर्ज करें

इस विधि में:

- (void)displayTypeSegmentSelected
{
_selectedDisplayTypeIndex = [_displayTypeControl selectedSegmentIndex];

if (_selectedDisplayTypeIndex == 0) {
NSLog(@"Single file item view selected");
[_collectionView setCollectionViewLayout:_flowLayout2 animated:NO];
[_collectionView reloadItemsAtIndexPaths:[_collectionView indexPathsForVisibleItems]];
} else if (_selectedDisplayTypeIndex == 1) {
NSLog(@"Grid style view selected");
[_collectionView setCollectionViewLayout:_flowLayout animated:NO];
[_collectionView reloadItemsAtIndexPaths:[_collectionView indexPathsForVisibleItems]];
}
}

गुण:

@property (strong, nonatomic) IBOutlet UICollectionView *collectionView;

@property (strong, nonatomic) IBOutlet UICollectionViewFlowLayout *flowLayout;

viewDidLoad:

- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"view did load");

_thisController = self;
_superView = [_thisController view];
_collectionView = [_thisController collectionView];
_navigationBar = [[_thisController navigationController] navigationBar];
_selectedDisplayTypeIndex = 1; // default display type selected to grid style

// Create flow layout
_flowLayout2 = [[UICollectionViewFlowLayout alloc] init];

// Set up margins, sizes etc
[_flowLayout2 setHeaderReferenceSize:CGSizeMake(50,93)];
[_flowLayout2 setItemSize:CGSizeMake(300, 500)];
[_flowLayout2 setMinimumLineSpacing:0];
[_flowLayout2 setMinimumInteritemSpacing:0];
[_flowLayout2 setSectionInset:UIEdgeInsetsMake(1, 0, 40, 0)];
[_flowLayout2 setScrollDirection:UICollectionViewScrollDirectionVertical];

// Grab cell nib file and give a reuse identifier
[_collectionView registerNib:[UINib nibWithNibName:@"VAGGarmentCell2" bundle:nil] forCellWithReuseIdentifier:@"Cell2"];

}

मैंने एनालाइज़र चलाया और 0 त्रुटियां मिलीं। मैंने प्रोफाइलर चलाया और मेमोरी लीक के लिए जाँच की और कोई नहीं हैं।

मैंने कई अन्य सूत्र पढ़े और उनमें से कोई भी नहीं मिलामेरे जैसे ही हाल के हैं। मैंने एआरसी के साथ काम करने के लिए पुरानी परियोजनाओं को परिवर्तित करते समय बहुत से लोगों को अनुभव किया है। हालांकि, मेरा हमेशा एआरसी (एक्सकोड 5 / आईओएस 7) का उपयोग किया गया है।

किसी भी विचार क्या हो रहा है और मैं इसे कैसे ठीक कर सकता है?

सादर।

उत्तर:

जवाब के लिए 0 № 1

यह मेरे लिए स्पष्ट नहीं है कि आपको यह क्यों मिलेगायदि आप स्क्रॉलिंग के दौरान लेआउट बदलते हैं, तो त्रुटि हो सकती है, लेकिन आप स्क्रॉलव्यूबिलबिनरैगैगिंग में अपने खंडित नियंत्रण को अक्षम करके इसे ठीक कर सकते हैं: सुनिश्चित करें कि आपने संग्रह दृश्य "प्रतिनिधि" होने के लिए अपना नियंत्रक निर्धारित किया है।