सार:संपत्ति विरासत: ऑटो संपत्ति संश्लेषण संपत्ति संश्लेषित नहीं होगा
यह सवाल अलग पढ़ें/लिखें के साथ अंदर और वर्गों को एक दूसरे से संपत्ति विरासत में के बाहर से पहुँचता संयोजन में संपत्तियों की विरासत के बारे में है।
विवरण:
मैं एक वर्ग A
और एक अन्य वर्ग B
, जो A
से विरासत है। में घोषित someProperty
संपत्ति है। मैं चाहता हूं कि संपत्ति इन वर्गों के बाहर से पढ़ा जाए और अंदर से पढ़/लिखें।
केवल एक वर्ग के साथ, यह मृत-सरल है: आप .h
में संपत्ति को केवल पढ़ने के रूप में घोषित करते हैं और आप इसे एक श्रेणी के अंदर .m में रीडराइट के रूप में फिर से घोषित करते हैं। किया हुआ।
लेकिन दो वर्गों के साथ, दूसरे से पाने, मैं नीचे संकलक चेतावनी B
में मिलता है:
ऑटो संपत्ति संश्लेषण संपत्ति 'someProperty' संश्लेषित नहीं होगा, क्योंकि यह 'ReadWrite' है, लेकिन इसे
आह: एक और संपत्ति
यहाँ के माध्यम से संश्लेषित किया जाएगा 'केवल पढ़ने के लिए' कोड है
#import <Foundation/Foundation.h>
@interface A : NSObject
// This property shall be readonly from outside, but read/write from subclasses
@property (readonly) SInt32 someProperty;
@end
बजे:
#import "A.h"
@implementation A
@end
B.h:
#import <Foundation/Foundation.h>
#import "A.h"
@interface B : A
@end
B.m:
#import "B.h"
@interface B()
// compiler warning in the following property declaration:
// /Users/.../B.m:12:41: Auto property synthesis will not synthesize property
// 'someProperty' because it is 'readwrite' but it will be synthesized
// 'readonly' via another property
@property (readwrite) SInt32 someProperty;
@end
@implementation B
@end
क्यों यह चेतावनी दिखाई देता है और मैं इसे कैसे से बचने के लिए मेरे कोड की संरचना करना चाहिए?
मुझे नहीं पता था @ गतिशील। मैं यही चाहता था। –