应用程序崩溃在CFRelease上

Par*_*fna 1 objective-c core-foundation

有时我的应用程序崩溃了 CFRelease(theURL);

CFURLRef theURL = CFURLCreateFromFSRef( kCFAllocatorDefault, inRef );
NSString *currentPath = [(NSURL *)theURL path];
CFRelease(theURL);  

Thread 0 Crashed:
0   com.apple.CoreFoundation        0x92a53354 CFRelease + 36  
Run Code Online (Sandbox Code Playgroud)

为什么?

创建规则

Core Foundation函数具有指示您拥有返回对象的名称:

在名称中嵌入"创建"的对象创建函数; 对象复制函数,名称中嵌入了"复制".如果您拥有一个对象,那么当您完成它后,您有责任放弃所有权(使用CFRelease).

ham*_*ene 5

CFRelease参数是NULL,函数将崩溃.检查返回的值CFURLCreateFromFSRef.