OK, then it seems I didn't do something fundamentally wrong. Probably a stupid 
mistake somewhere.

Thanks again!

Martin

On 28, Nov, 2010, at 10:26 AM, Stephen J. Butler wrote:

> 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
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> 
>> 
>> 
>> 
>> 
>> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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]

Reply via email to