- यदि आप ऑब्जेक्ट (पॉइंटर) पर कोई विधि कहते हैं तो उद्देश्य-सी में सामान्य व्यवहार क्या है (शायद क्योंकि कोई इसे प्रारंभ करना भूल गया है)? क्या यह किसी प्रकार की त्रुटि उत्पन्न नहीं कर सकता है (विभाजन गलती, शून्य सूचक अपवाद ...)?
- यदि यह सामान्य व्यवहार है, तो क्या इस व्यवहार को बदलने (संकलक को कॉन्फ़िगर करके) बदलने का कोई तरीका है ताकि प्रोग्राम रनटाइम पर किसी प्रकार की त्रुटि/अपवाद उठा सके?
यह स्पष्ट करने के लिए कि मैं किस बारे में बात कर रहा हूं, यहां एक उदाहरण है। इस कार्यान्वयन के साथएक अनियमित ऑब्जेक्ट (शून्य सूचक) पर एक विधि को कॉल करना
@interface Person : NSObject {
NSString *name;
}
@property (nonatomic, retain) NSString *name;
- (void)sayHi;
@end
:
इस वर्ग के होने के कार्यक्रम में
@implementation Person
@synthesize name;
- (void)dealloc {
[name release];
[super dealloc];
}
- (void)sayHi {
NSLog(@"Hello");
NSLog(@"My name is %@.", name);
}
@end
कहीं मैं यह कर:
Person *person = nil;
//person = [[Person alloc] init]; // let's say I comment this line
person.name = @"Mike"; // shouldn't I get an error here?
[person sayHi]; // and here
[person release]; // and here
और मैं किसी भी तरह से इस व्यवहार को बदलने के लिए के बारे में पता नहीं कर रहा हूँ। यह उद्देश्य-सी/कोको के साथ प्रोग्रामिंग का एक मौलिक हिस्सा है। आप इसे प्यार करना सीखेंगे। –
उत्तर में दस्तावेज़ से लिंक मृत है (* पृष्ठ नहीं मिला *)। – Pang