Hi Dave, For myClassA, you will always have to cast the return value to myClassB if you know that’s what will be returned. For a great blog post on the subject, I give you Mike Ash:
https://mikeash.com/pyblog/friday-qa-2015-11-20-covariance-and-contravariance.html Jeff Kelley slauncha...@gmail.com | @SlaunchaMan <https://twitter.com/SlaunchaMan> | jeffkelley.org <http://jeffkelley.org/> > On Jan 4, 2016, at 11:24 AM, Dave <d...@looktowindward.com> wrote: > > Hi, > > In Objective-C, is it possible to override a property and have it return a > different type to the base class? > > I have a base class with the following property defined: > > @property (nonatomic,retain) ClassA* propA; > > and the following getter: > > > -(ClassA*) propA > { > return someValueOfClassA; > } > > > I’d like to override this in my subclass, as so: > > -(ClassB*) propA > { > ClassA* myClassA; > ClassB* myClassB; > > myClassA = super.propA; > myClassB = [[ClassB alloc] initWithClassA:myClassA]; //ClassB is a subclass > of Class A > > return myClassB; > } > > I can do this ok, but when I access the property: > > // myClassA is already setup OK > ClassB* myClassB; > > myClassB = myClassA.propA; //Warning on this line saying > return type is not ClassB > > and I have to coerce the value to be ClassB to get rid of the warning. Is > there any way to avoid this? > > Thanks a lot > Dave _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com