18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#import "OFXMLElement.h"
#import "OFXMLElement+Serialization.h"
#import "OFSerialization.h"
#import "OFString.h"
#import "OFInvalidArgumentException.h"
#import "OFNotImplementedException.h"
#import "autorelease.h"
#import "macros.h"
int _OFXMLElement_Serialization_reference;
@implementation OFXMLElement (Serialization)
- (id)objectByDeserializing
{
void *pool = objc_autoreleasePoolPush();
Class class;
id object;
if ((class = objc_getClass([name cStringUsingEncoding:
OF_STRING_ENCODING_ASCII])) == Nil)
@throw [OFNotImplementedException exceptionWithClass: Nil];
if (![class conformsToProtocol: @protocol(OFSerialization)])
@throw [OFNotImplementedException
exceptionWithClass: class
selector: @selector(initWithSerialization:)];
object = [[class alloc] initWithSerialization: self];
objc_autoreleasePoolPop(pool);
return [object autorelease];
}
@end
|
<
>
|
|
|
<
|
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#import "OFXMLElement.h"
#import "OFXMLElement+Serialization.h"
#import "OFSerialization.h"
#import "OFString.h"
#import "OFInvalidArgumentException.h"
#import "autorelease.h"
#import "macros.h"
int _OFXMLElement_Serialization_reference;
@implementation OFXMLElement (Serialization)
- (id)objectByDeserializing
{
void *pool = objc_autoreleasePoolPush();
Class class;
id object;
if ((class = objc_getClass([name cStringUsingEncoding:
OF_STRING_ENCODING_ASCII])) == Nil)
@throw [OFInvalidArgumentException
exceptionWithClass: [self class]];
if (![class conformsToProtocol: @protocol(OFSerialization)])
@throw [OFInvalidArgumentException
exceptionWithClass: [self class]];
object = [[class alloc] initWithSerialization: self];
objc_autoreleasePoolPop(pool);
return [object autorelease];
}
@end
|