gpt4 book ai didi

ios - 我需要手动释放 CFStringRef 吗?

转载 作者:可可西里 更新时间:2023-11-01 06:20:12 49 4
gpt4 key购买 nike

能否请您告诉我在非 ARC 世界中哪种方法是正确的以及为什么。

+ (NSString *)getUUID {
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [(NSString*) string autorelease];
}

+ (NSString *)getUUID {
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (NSString*)string;
}

最佳答案

其他答案对于手动保留计数是正确的。当您意识到 ;^) 并切换到 ARC 时,您将无法发送 autorelease。相反,在 ARC 下,这样做:

+ (NSString *)getUUID {
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return CFBridgingRelease(string);
}

CFBridgingRelease 等同于 CFRelease,用于平衡 CFUUIDCreateString 返回的 +1 保留计数,但也返回一个静止的-ARC 将负责发布的有效引用。

关于ios - 我需要手动释放 CFStringRef 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17959760/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com