परीक्षण के दौरान एआरसी का उपयोग करके मुझे एक समस्या है जहां मुझे खराब पहुंच अपवाद मिल रहे हैं, लेकिन केवल परीक्षण निर्माण चलाते समय (डीबग बिल्ड में समान विधियों को कॉल करने से समस्या उत्पन्न नहीं होती है)। परियोजना एआरसी में सक्षम बनाया है और मैं Xcode 4.3 का उपयोग करके आईपैड 5.1 सिम्युलेटर पर इस चल रहा हूँ:EXC_BAD_ACCESS केवल
यहाँ है, जहां समस्या को फसलों:
- (void)testChangeFoodNotification {
Player* p = [[Player alloc] init];
[p addObserver:self forKeyPath:@"food" options:0 context:0]; // <-EXC_BAD_ACCESS (code=2)
p.food += 1;
STAssertTrue(_wasNotifiedOfFoodChange, nil);
}
बिंदु पर जब addObserver:
विधि कहा जाता है ऐसा नहीं ' ऐसा लगता है कि शामिल किसी भी वस्तु को जारी किया जाना चाहिए था ताकि अपवाद पैदा हो सके?
संपादित करें:
क्षमा याचना करता है, तो यह स्पष्ट नहीं था लेकिन कोड ऊपर एक टेस्ट केस के हिस्से के रूप निष्पादित किया जा रहा है (मानक Xcode OCUnit का उपयोग)। इसके अलावा मामले में यह कुछ भी स्पष्ट किया यहाँ खिलाड़ी वर्ग से प्रासंगिक कोड है (वहाँ अन्य ivars और विधियों है, लेकिन वे संपत्ति या तरीकों के लिए किसी भी कनेक्शन नहीं परीक्षण किया जा रहा है):
// Public interface
@interface Player : NSObject
@property (nonatomic, assign) NSInteger food;
@end
// Private interface
@interface Player() {
NSInteger _food;
}
@end
@implementation Player
@synthesize food = _food;
#pragma mark - Getters/Setters
- (void)setFood:(NSInteger)food {
[self willChangeValueForKey:@"food"];
_food = food;
[self didChangeValueForKey:@"food"];
}
मेरी इच्छा है कि मैं इस 100 बार ऊपर उठा सकता हूं। धन्यवाद! – DexterW
मुझे कोकोपोड्स के साथ इस मुद्दे का भी सामना करना पड़ा। क्लास कार्यान्वयन फ़ाइल को ऐप और ऐप परीक्षण लक्ष्य दोनों के लिए फोड में शामिल किया गया था, सिवाय इसके कि लॉग में कोई डुप्लिकेट क्लास चेतावनी नहीं थी। – Eric