Hi Quentin,
Here's my first attempt at the refactoring.
I changed any implementations of the -(NSArray *)properties methods to
-(NSArray*)propertyNames, and removed the [super properties]
arrayByAddingObjectsInArray: properties]; bits, so they just return
the properties for that class.
The -(NSArray *)allPropertyNames method is implemented in
EtoileFoundation/ETPropertyValueCoding.m, in an NSObject category, but
not part of the ETPropertyValueCoding protocol. I thought this is the
best approach, since allPropertyNames only needs to be overridden if
an object wants to hide/not inherit properties from its superclasses.
Eric
Index: Frameworks/CoreObject/COFile.m
===================================================================
--- Frameworks/CoreObject/COFile.m (revision 4772)
+++ Frameworks/CoreObject/COFile.m (working copy)
@@ -121,11 +121,10 @@
// TODO: Optimize, probably horribly slow. Also not sure we got to expose NSObject
// properties by default
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
NSArray *properties = [[self metadatas] allKeys];
- properties = [properties arrayByAddingObjectsFromArray: [super properties]];
/* icon, name, displayName and URL are declared in metadatas */
properties = [properties arrayByAddingObjectsFromArray:
A(@"isCopyPromise", @"exists", @"metadatas", @"uniqueID")];
Index: Frameworks/CoreObject/TestFile.m
===================================================================
--- Frameworks/CoreObject/TestFile.m (revision 4772)
+++ Frameworks/CoreObject/TestFile.m (working copy)
@@ -64,7 +64,7 @@
- (void) testProperties
{
- id properties = [self properties];
+ id properties = [self allPropertyNames];
UKNotNil(properties);
UKTrue([properties count] > 0);
Index: Frameworks/CoreObject/Headers/COFile.h
===================================================================
--- Frameworks/CoreObject/Headers/COFile.h (revision 4772)
+++ Frameworks/CoreObject/Headers/COFile.h (working copy)
@@ -21,7 +21,7 @@
- (NSString *) uniqueID;
- (NSURL *) URL;
-- (NSArray *) properties;
+- (NSArray *) propertyNames;
- (NSDictionary *) metadatas;
- (NSString *) name;
- (NSString *) displayName;
Index: Frameworks/CoreObject/Headers/COCoreObjectProtocol.h
===================================================================
--- Frameworks/CoreObject/Headers/COCoreObjectProtocol.h (revision 4772)
+++ Frameworks/CoreObject/Headers/COCoreObjectProtocol.h (working copy)
@@ -14,7 +14,7 @@
Properties should encompass all model attributes and relationships that you
want to publish. Your Property-Value Coding implementation will determine
for each one whether they are readable, writable or both.*/
-- (NSArray *) properties;
+- (NSArray *) propertyNames;
/** Returns the metadatas of the receiver to be indexed by the metadata server.
The set of metadatas may intersect or not the set of properties. */
- (NSDictionary *) metadatas;
Index: Frameworks/CoreObject/Headers/COObject.h
===================================================================
--- Frameworks/CoreObject/Headers/COObject.h (revision 4772)
+++ Frameworks/CoreObject/Headers/COObject.h (working copy)
@@ -86,7 +86,7 @@
/* Managed Object Edition */
-- (NSArray *) properties;
+- (NSArray *) propertyNames;
- (BOOL) removeValueForProperty: (NSString *) property;
- (BOOL) setValue: (id) value forProperty: (NSString *) property;
- (id) valueForProperty: (NSString *) property;
Index: Frameworks/CoreObject/COObject.m
===================================================================
--- Frameworks/CoreObject/COObject.m (revision 4772)
+++ Frameworks/CoreObject/COObject.m (working copy)
@@ -344,9 +344,9 @@
/** <p>Returns the properties published by the receiver and accessible through
<em>Property Value Coding</em>. The returned array includes the properties
inherited from the superclass too, see -[NSObject properties].</p> */
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
- return [[super properties] arrayByAddingObjectsFromArray: [[self class] properties]];
+ return [[self class] properties];
}
/** <p></p> */
Index: Frameworks/EtoileUI/CoreObjectBackend/COUIServer.m
===================================================================
--- Frameworks/EtoileUI/CoreObjectBackend/COUIServer.m (revision 4772)
+++ Frameworks/EtoileUI/CoreObjectBackend/COUIServer.m (working copy)
@@ -220,7 +220,7 @@
return [NSArray array];
}
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
return [NSArray array]; // FIXME
}
Index: Frameworks/EtoileUI/Source/NSView+Etoile.m
===================================================================
--- Frameworks/EtoileUI/Source/NSView+Etoile.m (revision 4772)
+++ Frameworks/EtoileUI/Source/NSView+Etoile.m (working copy)
@@ -303,10 +303,10 @@
/* Property Value Coding */
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
// TODO: Expose more properties
- NSArray *properties = [NSArray arrayWithObjects: @"x", @"y", @"width",
+ return [NSArray arrayWithObjects: @"x", @"y", @"width",
@"height", @"superview", @"window", @"tag", @"hidden",
@"autoresizingMask", @"autoresizesSubviews", @"subviews", @"flipped",
@"frame", @"frameRotation", @"bounds", @"boundsRotation", @"isRotatedFromBase",
@@ -316,8 +316,6 @@
@"canDraw", @"shouldDrawColor", @"widthAdjustLimit",
@"heightAdjustLimit", @"printJobTitle", @"mouseDownCanMoveWindow",
@"needsPanelToBecomeKey", nil];
-
- return [[super properties] arrayByAddingObjectsFromArray: properties];
}
/* Basic Properties */
Index: Frameworks/EtoileUI/Source/ETLayoutItem+Reflection.m
===================================================================
--- Frameworks/EtoileUI/Source/ETLayoutItem+Reflection.m (revision 4772)
+++ Frameworks/EtoileUI/Source/ETLayoutItem+Reflection.m (working copy)
@@ -123,7 +123,7 @@
meta levels 1 or 2.
*/
// NOTE: this code may be better located in -[ETLayoutItem valueForProperty:]
- if ([[item properties] containsObject: @"property"])
+ if ([[item allPropertyNames] containsObject: @"property"])
{
propertyName = [metaLayoutItem valueForProperty: @"property"];
if (propertyName != nil)
Index: Frameworks/EtoileUI/Source/ETLayoutItem.m
===================================================================
--- Frameworks/EtoileUI/Source/ETLayoutItem.m (revision 4772)
+++ Frameworks/EtoileUI/Source/ETLayoutItem.m (working copy)
@@ -801,7 +801,7 @@
/* Basic version which doesn't fetch property value beyond the represented
object, even if this represented object represents another object too. */
- if (modelObject != nil && [[(NSObject *)modelObject properties] containsObject: key])
+ if (modelObject != nil && [[(NSObject *)modelObject allPropertyNames] containsObject: key])
{
if ([modelObject isLayoutItem])
{
@@ -834,7 +834,7 @@
/* Basic version which doesn't propagate property editing beyond the represented
object, even if this represented object represents another object too. */
- if (modelObject != nil && [[(NSObject *)modelObject properties] containsObject: key])
+ if (modelObject != nil && [[(NSObject *)modelObject allPropertyNames] containsObject: key])
{
if ([modelObject isLayoutItem])
{
@@ -859,7 +859,7 @@
return result;
}
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
NSArray *properties = A(@"identifier", kETNameProperty, @"x", @"y", @"width",
@"height", @"view", kETSelectedProperty, kETLayoutProperty,
@@ -870,7 +870,7 @@
properties = [[VARIABLE_PROPERTIES allKeys] arrayByAddingObjectsFromArray: properties];
- return [[super properties] arrayByAddingObjectsFromArray: properties];
+ return properties;
}
/* Returns a dictionary representation of every property/value pairs not stored
Index: Frameworks/EtoileUI/Source/ETViewModelLayout.m
===================================================================
--- Frameworks/EtoileUI/Source/ETViewModelLayout.m (revision 4772)
+++ Frameworks/EtoileUI/Source/ETViewModelLayout.m (working copy)
@@ -291,11 +291,11 @@
object) of the meta item.
See -[ETLayoutItem properties] to know which ivars/accessors are
reified into properties. */
- nbOfItems = [[metaItem properties] count];
+ nbOfItems = [[metaItem allPropertyNames] count];
}
else if ([self displayMode] == ETLayoutDisplayModeModelProperties)
{
- nbOfItems = [[inspectedModel properties] count];
+ nbOfItems = [[inspectedModel allPropertyNames] count];
}
else if ([self displayMode] == ETLayoutDisplayModeViewContent)
{
@@ -347,7 +347,7 @@
if ([self displayMode] == ETLayoutDisplayModeViewProperties)
{
- NSString *property = [[metaItem properties] objectAtIndex: index];
+ NSString *property = [[metaItem allPropertyNames] objectAtIndex: index];
[propertyItem setValue: property forProperty: @"property"];
// FIXME: Instead using -description, write a generic ETObjectFormatter
@@ -360,7 +360,7 @@
}
else if ([self displayMode] == ETLayoutDisplayModeModelProperties)
{
- NSString *property = [(NSArray *)[inspectedModel properties] objectAtIndex: index];
+ NSString *property = [(NSArray *)[inspectedModel allPropertyNames] objectAtIndex: index];
[propertyItem setValue: property forProperty: @"property"];
[propertyItem setValue: [inspectedModel valueForProperty: property] forProperty: @"value"];
Index: Frameworks/EtoileUI/Source/ETObjectBrowserLayout.m
===================================================================
--- Frameworks/EtoileUI/Source/ETObjectBrowserLayout.m (revision 4772)
+++ Frameworks/EtoileUI/Source/ETObjectBrowserLayout.m (working copy)
@@ -245,7 +245,7 @@
if ([self browsedObject] == nil)
return [NSArray array];
- return [(NSObject *)[self browsedObject] properties];
+ return [(NSObject *)[self browsedObject] allPropertyNames];
}
@end
Index: Frameworks/EtoileUI/Source/ETLayoutItemGroup.m
===================================================================
--- Frameworks/EtoileUI/Source/ETLayoutItemGroup.m (revision 4772)
+++ Frameworks/EtoileUI/Source/ETLayoutItemGroup.m (working copy)
@@ -240,12 +240,10 @@
/* Property Value Coding */
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
- NSArray *properties = A(kSourceProperty, kDelegateProperty,
+ return A(kSourceProperty, kDelegateProperty,
kETDoubleClickedItemProperty);
-
- return [[super properties] arrayByAddingObjectsFromArray: properties];
}
/* Finding Container */
Index: Frameworks/EtoileUI/Source/ETView.m
===================================================================
--- Frameworks/EtoileUI/Source/ETView.m (revision 4772)
+++ Frameworks/EtoileUI/Source/ETView.m (working copy)
@@ -650,7 +650,7 @@
{
id value = nil;
- if ([[self properties] containsObject: key])
+ if ([[self allPropertyNames] containsObject: key])
value = [self valueForKey: key];
if (value == nil)
@@ -661,7 +661,7 @@
- (BOOL) setValue: (id)value forProperty: (NSString *)key
{
- if ([[self properties] containsObject: key])
+ if ([[self allPropertyNames] containsObject: key])
{
[self setValue: value forKey: key];
return YES;
@@ -674,12 +674,10 @@
}
}
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
// NOTE: We may expose other properties in future
- id properties = [NSArray arrayWithObjects: @"disclosable", nil];
-
- return [[super properties] arrayByAddingObjectsFromArray: properties];
+ return [NSArray arrayWithObjects: @"disclosable", nil];
}
/* Live Development */
Index: Frameworks/EtoileUI/Source/Controls+Etoile.m
===================================================================
--- Frameworks/EtoileUI/Source/Controls+Etoile.m (revision 4772)
+++ Frameworks/EtoileUI/Source/Controls+Etoile.m (working copy)
@@ -72,17 +72,15 @@
/* Property Value Coding */
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
// NOTE: objectValue property is exposed by NSObject+Model
// TODO: selectedTag, selectedCell and currentEditor are read only.
// Eventually expose cellClass as class property.
- NSArray *properties = [NSArray arrayWithObjects: @"cell", @"enabled",
+ return [NSArray arrayWithObjects: @"cell", @"enabled",
@"selectedTag", @"selectedCell", @"alignement", @"font", @"formatter",
@"baseWritingDirection", @"currentEditor", @"target", @"action",
@"continuous", @"tag",@"refusesFirstResponder", @"ignoresMultiClick", nil];
-
- return [[super properties] arrayByAddingObjectsFromArray: properties];
}
@end
@@ -96,12 +94,10 @@
return NSMakeRect(0, 0, 96, 22);
}
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
// TODO: Declare properties.
- NSArray *properties = [NSArray array];
-
- return [[super properties] arrayByAddingObjectsFromArray: properties];
+ return [NSArray array];
}
@end
Index: Frameworks/EtoileUI/Source/ETInspector.m
===================================================================
--- Frameworks/EtoileUI/Source/ETInspector.m (revision 4772)
+++ Frameworks/EtoileUI/Source/ETInspector.m (working copy)
@@ -199,9 +199,9 @@
{
item = [item representedObject];
- NSAssert([item properties] != nil, @"Represented object of a layout item should never be nil");
+ NSAssert([item allPropertyNames] != nil, @"Represented object of a layout item should never be nil");
#if 1
- nbOfPropertyItems = [[item properties] count];
+ nbOfPropertyItems = [[item allPropertyNames] count];
#else
NSArray *ivars = [[item representedObject] instanceVariables];
@@ -225,12 +225,12 @@
int index = [path lastIndex];
#if 1
- NSString *property = [[item properties] objectAtIndex: index];
+ NSString *property = [[item allPropertyNames] objectAtIndex: index];
ETProperty *propertyRep = [ETProperty propertyWithName: property representedObject: item];
[propertyItem setRepresentedObject: propertyRep];
#else
- NSString *property = [[item properties] objectAtIndex: index];
+ NSString *property = [[item allPropertyNames] objectAtIndex: index];
[propertyItem setValue: property forProperty: @"property"];
// FIXME: Instead using -description, write a generic ETObjectFormatter
Index: Frameworks/EtoileUI/Source/ETOutlineLayout.m
===================================================================
--- Frameworks/EtoileUI/Source/ETOutlineLayout.m (revision 4772)
+++ Frameworks/EtoileUI/Source/ETOutlineLayout.m (working copy)
@@ -315,7 +315,7 @@
/* Report nil value for debugging */
if (value == nil || ([value isEqual: [NSNull null]]
- && [[(NSObject *)item properties] containsObject: [column identifier]] == NO))
+ && [[(NSObject *)item allPropertyNames] containsObject: [column identifier]] == NO))
{
// FIXME: Turn into an ETDebugLog
ETDebugLog(@"Item %@ has no property %@ requested by layout %@", item,
Index: Frameworks/EtoileUI/Headers/ETLayoutItem.h
===================================================================
--- Frameworks/EtoileUI/Headers/ETLayoutItem.h (revision 4772)
+++ Frameworks/EtoileUI/Headers/ETLayoutItem.h (working copy)
@@ -180,7 +180,7 @@
- (id) valueForProperty: (NSString *)key;
- (BOOL) setValue: (id)value forProperty: (NSString *)key;
-- (NSArray *) properties;
+- (NSArray *) propertyNames;
- (NSDictionary *) variableProperties;
- (unsigned int) UIMetalevel;
Index: Frameworks/EtoileUI/Headers/ETView.h
===================================================================
--- Frameworks/EtoileUI/Headers/ETView.h (revision 4772)
+++ Frameworks/EtoileUI/Headers/ETView.h (working copy)
@@ -162,7 +162,7 @@
- (id) valueForProperty: (NSString *)key;
- (BOOL) setValue: (id)value forProperty: (NSString *)key;
-- (NSArray *) properties;
+- (NSArray *) propertyNames;
/* Live Development */
Index: Frameworks/EtoileUI/Headers/Controls+Etoile.h
===================================================================
--- Frameworks/EtoileUI/Headers/Controls+Etoile.h (revision 4772)
+++ Frameworks/EtoileUI/Headers/Controls+Etoile.h (working copy)
@@ -50,14 +50,14 @@
/* Property Value Coding */
-- (NSArray *) properties;
+- (NSArray *) propertyNames;
@end
@interface NSTextField (Etoile)
+ (NSRect) defaultFrame;
-- (NSArray *) properties;
+- (NSArray *) propertyNames;
@end
@interface NSImageView (Etoile)
Index: Frameworks/EtoileUI/Headers/NSView+Etoile.h
===================================================================
--- Frameworks/EtoileUI/Headers/NSView+Etoile.h (revision 4772)
+++ Frameworks/EtoileUI/Headers/NSView+Etoile.h (working copy)
@@ -81,7 +81,7 @@
/* Property Value Coding */
-- (NSArray *) properties;
+- (NSArray *) propertyNames;
/* Basic Properties */
Index: Frameworks/EtoileFoundation/Source/NSObject+Model.m
===================================================================
--- Frameworks/EtoileFoundation/Source/NSObject+Model.m (revision 4772)
+++ Frameworks/EtoileFoundation/Source/NSObject+Model.m (working copy)
@@ -209,7 +209,7 @@
/* Property Value Coding */
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
return [NSArray arrayWithObjects: @"icon", @"displayName", @"className",
@"stringValue", @"objectValue", @"isCollection", @"isGroup",
@@ -222,7 +222,7 @@
{
id value = nil;
- if ([[self properties] containsObject: key])
+ if ([[self allPropertyNames] containsObject: key])
{
value = [self primitiveValueForKey: key];
}
@@ -242,7 +242,7 @@
{
BOOL result = NO;
- if ([[self properties] containsObject: key])
+ if ([[self allPropertyNames] containsObject: key])
{
[self setPrimitiveValue: value forKey: key];
result = YES;
@@ -262,6 +262,7 @@
/* Key Value Coding */
+// FIXME: Why are these static?
static id (*valueForKeyIMP)(id, SEL, NSString *) = NULL;
static void (*setValueForKeyIMP)(id, SEL, id, NSString *) = NULL;
@@ -424,7 +425,7 @@
/* Property Value Coding */
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
return [NSArray arrayWithObjects: @"property", @"name", @"value", nil];
}
@@ -433,7 +434,7 @@
{
id value = nil;
- if ([[self properties] containsObject: key])
+ if ([[self allPropertyNames] containsObject: key])
{
if ([key isEqual: @"value"])
{
@@ -456,7 +457,7 @@
{
BOOL result = NO;
- if ([[self properties] containsObject: key])
+ if ([[self allPropertyNames] containsObject: key])
{
// NOTE: name, type are read-only properties
if ([key isEqual: @"value"])
Index: Frameworks/EtoileFoundation/Source/NSObject+Etoile.m
===================================================================
--- Frameworks/EtoileFoundation/Source/NSObject+Etoile.m (revision 4772)
+++ Frameworks/EtoileFoundation/Source/NSObject+Etoile.m (working copy)
@@ -597,7 +597,7 @@
#endif
}
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
return A(@"possessor", @"name", @"type", @"typeName", @"typeEncoding",
@"isObjectType", @"value");
Index: Frameworks/EtoileFoundation/Source/ETPropertyValueCoding.m
===================================================================
--- Frameworks/EtoileFoundation/Source/ETPropertyValueCoding.m (revision 4772)
+++ Frameworks/EtoileFoundation/Source/ETPropertyValueCoding.m (working copy)
@@ -40,7 +40,24 @@
#import <EtoileFoundation/NSObject+Model.h>
#import <EtoileFoundation/EtoileCompatibility.h>
+...@implementation NSObject (ETPropertyValueCoding)
+- (NSArray *) allPropertyNames
+{
+ NSMutableArray *properties = [[self propertyNames] mutableCopy];
+ for (Class c = [self superclass]; c != Nil; c = [c superclass])
+ {
+ id (*propertyNamesIMP)(id, SEL) =
+ (id (*)(id, SEL))[c instanceMethodForSelector: @selector(propertyNames)];
+
+ [properties addObjectsFromArray:
+ propertyNamesIMP(self, @selector(propertyNames))];
+ }
+ return properties;
+}
+
+...@end
+
@implementation NSDictionary (ETPropertyValueCoding)
#if 0
- (NSArray *) properties
@@ -59,19 +76,17 @@
}
#else
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
- NSArray *properties = [NSArray arrayWithObjects: @"count", @"firstObject",
- @"lastObject", nil];
-
- return [[super properties] arrayByAddingObjectsFromArray: properties];
+ return [NSArray arrayWithObjects: @"count", @"firstObject", @"lastObject",
+ nil];
}
- (id) valueForProperty: (NSString *)key
{
id value = nil;
- if ([[self properties] containsObject: key])
+ if ([[self allPropertyNames] containsObject: key])
{
id (*NSObjectValueForKeyIMP)(id, SEL, id) = NULL;
@@ -95,7 +110,7 @@
{
BOOL result = YES;
- if ([[self properties] containsObject: key])
+ if ([[self allPropertyNames] containsObject: key])
{
void (*NSObjectSetValueForKeyIMP)(id, SEL, id, id) = NULL;
@@ -142,17 +157,15 @@
@implementation NSArray (ETPropertyValueCoding)
-- (NSArray *) properties
+- (NSArray *) propertyNames
{
- NSArray *properties = [NSArray arrayWithObjects: @"count", @"firstObject",
- @"lastObject", nil];
-
- return [[super properties] arrayByAddingObjectsFromArray: properties];
+ return [NSArray arrayWithObjects: @"count", @"firstObject", @"lastObject",
+ nil];
}
- (id) valueForProperty: (NSString *)key
{
- if ([[self properties] containsObject: key])
+ if ([[self allPropertyNames] containsObject: key])
{
id (*NSObjectValueForKeyIMP)(id, SEL, id) = NULL;
@@ -184,7 +197,7 @@
{
BOOL result = YES;
- if ([[self properties] containsObject: key])
+ if ([[self allPropertyNames] containsObject: key])
{
void (*NSObjectSetValueForKeyIMP)(id, SEL, id, id) = NULL;
Index: Frameworks/EtoileFoundation/Headers/ETPropertyValueCoding.h
===================================================================
--- Frameworks/EtoileFoundation/Headers/ETPropertyValueCoding.h (revision 4772)
+++ Frameworks/EtoileFoundation/Headers/ETPropertyValueCoding.h (working copy)
@@ -37,17 +37,27 @@
#import <Foundation/Foundation.h>
-
/** Protocol usually adopted by model objects */
@protocol ETPropertyValueCoding
-- (NSArray *) properties;
+/**
+ * Returns the names of properties this object has, not including properties
+ * declared by superclasses of this object's class.
+ */
+- (NSArray *) propertyNames;
- (id) valueForProperty: (NSString *)key;
- (BOOL) setValue: (id)value forProperty: (NSString *)key;
@end
+...@interface NSObject (ETPropertyValueCoding)
+/**
+ * Returns the names of all properties this object has, including properties
+ * declared by superclasses of this object's class.
+ */
+- (NSArray *) allPropertyNames;
+...@end
-...@interface NSDictionary (ETPropertyValueCoding) <ETPropertyValueCoding>
-- (NSArray *) properties;
+...@interface NSDictionary (ETPropertyValueCoding)
+- (NSArray *) propertyNames;
- (id) valueForProperty: (NSString *)key;
- (BOOL) setValue: (id)value forProperty: (NSString *)key;
@end
Index: Frameworks/EtoileFoundation/Headers/NSObject+Model.h
===================================================================
--- Frameworks/EtoileFoundation/Headers/NSObject+Model.h (revision 4772)
+++ Frameworks/EtoileFoundation/Headers/NSObject+Model.h (working copy)
@@ -36,7 +36,6 @@
#import <Foundation/Foundation.h>
#import <EtoileFoundation/ETPropertyValueCoding.h>
-
@interface NSObject (EtoileModel)
+ (id) objectWithObjectValue: (id)object;
@@ -54,7 +53,7 @@
/* Property Value Coding */
-- (NSArray *) properties;
+- (NSArray *) propertyNames;
- (id) valueForProperty: (NSString *)key;
- (BOOL) setValue: (id)value forProperty: (NSString *)key;
@@ -94,7 +93,7 @@
/** Property Representation */
-...@interface ETProperty : NSObject <ETPropertyValueCoding>
+...@interface ETProperty : NSObject
{
id _propertyOwner;
id _propertyName;
@@ -117,7 +116,7 @@
/* Property Value Coding */
-- (NSArray *) properties;
+- (NSArray *) propertyNames;
- (id) valueForProperty: (NSString *)key;
- (BOOL) setValue: (id)value forProperty: (NSString *)key;
_______________________________________________
Etoile-dev mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-dev