mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-02 21:01:07 +00:00
Fixed +[NSValueTransformer valueTransformerForName:] to automatically register
any available NSValueTransformer subclass that matches the given name and is not yet registered. This behavior is described in the Cocoa API documentation. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37565 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
58d38a26b9
commit
74210c8f6a
3 changed files with 25 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2014-01-08 Quentin Mathe <quentin.mathe@gmail.com>
|
||||||
|
|
||||||
|
* Source/NSValueTransformer (+valueTransformerForName:): Fixed to
|
||||||
|
automatically register any available NSValueTransformer subclass that
|
||||||
|
matches the given name and is not yet registered. This behavior is
|
||||||
|
described in the Cocoa API documentation.
|
||||||
|
|
||||||
2014-01-08 Richard Frith-Macdonald <rfm@gnu.org>
|
2014-01-08 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
* Source/NSUUID.m:
|
* Source/NSUUID.m:
|
||||||
|
|
|
@ -85,6 +85,10 @@ GS_EXPORT NSString* const NSUnarchiveFromDataTransformerName;
|
||||||
/**
|
/**
|
||||||
* Returns the transformer registered for the specified name, or nil
|
* Returns the transformer registered for the specified name, or nil
|
||||||
* if no transformer is registered for name.
|
* if no transformer is registered for name.
|
||||||
|
*
|
||||||
|
* If no transformer is found, but the name corresponds to a valid
|
||||||
|
* NSValueTransformer subclass name, the receiver instantiates this subclass
|
||||||
|
* using -init and registers it automatically for name.
|
||||||
*/
|
*/
|
||||||
+ (NSValueTransformer *) valueTransformerForName: (NSString *)name;
|
+ (NSValueTransformer *) valueTransformerForName: (NSString *)name;
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,20 @@ static GSLazyLock *lock = nil;
|
||||||
[lock lock];
|
[lock lock];
|
||||||
transformer = [registry objectForKey: name];
|
transformer = [registry objectForKey: name];
|
||||||
IF_NO_GC([transformer retain];)
|
IF_NO_GC([transformer retain];)
|
||||||
|
|
||||||
|
if (transformer == nil)
|
||||||
|
{
|
||||||
|
Class transformerClass = NSClassFromString(name);
|
||||||
|
|
||||||
|
if (transformerClass != Nil
|
||||||
|
&& [transformerClass isSubclassOfClass: [NSValueTransformer class]])
|
||||||
|
{
|
||||||
|
transformer = [[transformerClass alloc] init];
|
||||||
|
|
||||||
|
[registry setObject: transformer forKey: name];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[lock unlock];
|
[lock unlock];
|
||||||
return AUTORELEASE(transformer);
|
return AUTORELEASE(transformer);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue