クラスのプロパティ名とプロパティ値を使用して、XML としてシリアル化するクラスを作成したいと考えています。そのために、基本クラスに次の関数を作成しました (そこから他のすべてのクラスを派生させます)。
- (NSString*) serialize
{
unsigned int outCount, i;
NSMutableString* s = [NSMutableString string];
Class currentClass = [self class];
while(currentClass != nil) {
objc_property_t *properties = class_copyPropertyList([self class], &outCount);
if(outCount > 0) {
for(i = 0; i < outCount; i++) {
objc_property_t property = properties[i];
NSString *name = [NSString stringWithCString: property_getName(property) encoding: NSUTF8StringEncoding];
[s appendFormat: @"<%@>%@</%@>", name, (NSString*)property, name];
}
}
free(properties);
}
return (NSString*)s;
}
@end
私は、すべてのプロパティが (非アトミックで強力な) NSString* であると想定しています (今のところ、より洗練されたコードは後で提供される予定です)。今、何らかの理由で私がラインを打ったとき
[s appendFormat: @"<%@>%@</%@>", name, (NSString*)property], name];
EXC_BAD_ACCESS 例外が発生しています。私は何を間違っていますか?前もって感謝します!