के साथ लेखन की अनुमति क्यों देती है, मैं "मैक ओएस एक्स के लिए प्रोग्रामिंग" में "कुंजी मूल्य कोडिंग" अध्याय के माध्यम से काम कर रहा हूं। मैंने एक स्लाइडर और एक लेबल के साथ एक इंटरफेस बनाया है, दोनों फिडो, एक int से बंधे हैं। अगर मैंने फिडो के लिए संपत्ति को केवल पढ़ने के लिए सेट किया है, तो स्लाइडर को ले जाने से लेबल को इसके मान को बदलने का कारण बनता है। मैंने माना था कि मुझे इसके लिए कुछ प्रकार की त्रुटि मिल जाएगी। अगर संपत्ति केवल पढ़ने योग्य है, तो स्लाइडर अभी भी संपत्ति को कैसे लिख सकता है? मैंने सोचा कि इसमें कोई सेटर्स नहीं बनाया जाएगा, और केवीसी काम नहीं करेगा। धन्यवाद।एक रीडोनली प्रॉपर्टी अभी भी केवीसी
यहाँ कोड मैं का उपयोग कर रहा है:
#import <Cocoa/Cocoa.h>
@interface AppController : NSObject
{
int fido;
}
@property (readonly, assign) int fido;
@end
#import "AppController.h"
@implementation AppController
@synthesize fido;
- (id)init
{
[super init];
[self setValue:[NSNumber numberWithInt:5] forKey:@"fido"];
NSNumber *n = [self valueForKey:@"fido"];
NSLog(@"fido = %@", n);
return self;
}
@end
alt text http://idisk.me.com/nevan/Public/Pictures/Skitch/Window-20091001-174352.png
आप + (BOOL) का उपयोग भी कर सकते हैं प्रवेश Variables प्रत्यक्ष रूप से {वापसी नहीं; } इस केवीसी व्यवहार को खत्म करने के लिए – sbooth
अच्छा बिंदु और अंदर आने के लिए एक अच्छी आदत। धन्यवाद! – bbum
ग्रेट उत्तर, धन्यवाद। कारण मैं इस सवाल से पूछ रहा था कि अध्याय के मुख्य बिंदुओं में से एक यह है कि केवीसी सेटर्स और गेटर्स का उपयोग करता है। मुझे लगता है कि वे एकमात्र तरीका काम करते थे। इनिट शैली वह शैली है जिसका वह पुस्तक में उपयोग करता है। वह कहता है कि वह कक्षाएं जो उप-वर्ग कभी शून्य नहीं लौटती हैं, इसलिए वह सादगी के लिए चेक छोड़ देता है। –