ios - 访问属性的EXC_BAD_ACCESS异常

标签 ios objective-c properties

我想使用该类的属性名称和属性值创建一个要序列化为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异常。
我究竟做错了什么?
提前致谢!

最佳答案

属性以c字符串而不是NSString的形式返回。只需更改格式以打印出c字符串,而不是尝试转换它,就像这样:

            [s appendFormat: @"<%@>%s</%@>", name, property, name];

关于ios - 访问属性的EXC_BAD_ACCESS异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734952/

相关文章:

ios - 多个 UIAlertViews 的错误/错误

ios - 为什么我不能在 iOS 中的任何 map 应用程序上直接进行深度链接以逐个导航?

arrays - 将一个对象的多个属性收集到一个数组中

c# - 使用局部变量有什么好处?

ios - iOS 7 的 UIAlertView/UIAlertController 兼容性

ios - Safari Web 检查器在远程调试时显示空白窗口 (iOS 6 + iOS 7)

ios - 将字符串附加到 NSMutableDictionary 中的 NSMutableArray

iphone - 我可以将 CAArchive 类添加到我的 iPhone 项目以序列化数据吗?如果是这样,如何?

ios - 在 AFNetworking 3.0 失败 block 上获取 responseObject

vb.net - 我应该使用私有(private)变量还是属性