On Sun, Nov 28, 2010 at 3:15 AM, Martin Hewitson <[email protected]> wrote: > It 'works' for me too, I just warnings from Xcode. Anyway, I'll check in case > I made a typo or something.
I don't get any warnings. > On 28, Nov, 2010, at 9:50 AM, Stephen J. Butler wrote: > >> On Sun, Nov 28, 2010 at 2:15 AM, Martin Hewitson >> <[email protected]> wrote: >>> Suppose I have a formal protocol which defines a method: >>> >>> - (NSArray*)objects; >>> >>> Then I implement a class which implements this protocol. To do that I make >>> a property: >>> >>> @property (nonatomic, readwrite, retain) NSArray * objects; >>> >>> and put the appropriate synthesize statement in the implementation. >>> >>> I get compiler warnings that this class doesn't implement the protocol. It >>> seems it doesn't take the synthesized getter as being an implementation of >>> the -objects method. >>> >>> I also tried explicitly adding the implementation, but the warning remains: >>> >>> - (NSArray*) objects >>> { >>> return objects; >>> } >>> >>> Am I doing something wrong here, or is it not possible to use a property to >>> satisfy a protocol? >> >> Works for me: >> >> >> #import <Foundation/Foundation.h> >> >> @protocol Bar >> - (NSArray*) objects; >> @end >> >> @interface Foo : NSObject < Bar > { >> NSArray *objects; >> } >> @property (nonatomic, readwrite, retain) NSArray *objects; >> @end >> >> @implementation Foo >> #if 0 >> - (NSArray*) objects { return objects; } >> - (void) setObjects:(NSArray*)o { >> [o retain]; >> [objects autorelease]; >> objects = o; >> } >> #else >> @synthesize objects; >> #endif >> @end >> >> int main (int argc, const char * argv[]) { >> NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; >> >> Foo *f = [[[Foo alloc] init] autorelease]; >> id< Bar > b = f; >> >> f.objects = [NSArray arrayWithObjects:@"one", >> @"two", @"three", nil]; >> NSLog( @"objects = %@", [b objects] ); >> >> [pool drain]; >> return 0; >> } > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Martin Hewitson > Albert-Einstein-Institut > Max-Planck-Institut fuer > Gravitationsphysik und Universitaet Hannover > Callinstr. 38, 30167 Hannover, Germany > Tel: +49-511-762-17121, Fax: +49-511-762-5861 > E-Mail: [email protected] > WWW: http://www.aei.mpg.de/~hewitson > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > > > _______________________________________________ Cocoa-dev mailing list ([email protected]) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [email protected]
