由于某些原因,此示例代码有效:
NSArray *immutable = @[ @"a", @"b", @"c" ];
NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers);
并且此代码在转换时生成nil
:
NSArray *immutable = @[ @"a", [NSNull null], @"c" ];
NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers);
我试图在使用此功能时发现任何提及NSNull
的情况。我怀疑它与方法检查财产是否可变的方式有关,但我无法用事实来支持这一点。
有什么想法吗?
答案 0 :(得分:6)
正如来自苹果开发者论坛的善良人士所指出的那样,问题是财产清单结构对于可以使用的数据类型是相当严格的。 NSNull
不是允许的。
来自apple docs:
属性列表是从基本的Core Foundation类型
CFString
,CFNumber
,CFBoolean
,CFDate
和CFData
构建的。