所以我做了一个函数:
void alertErr(const char *const message, const char *const info) {
NSAlert *alert = [[NSAlert alloc] init];
alert.alertStyle = NSAlertStyleCritical;
alert.messageText = @(message);
alert.informativeText = @(info);
[Alert runModal];
}通常会有某种形式的@AutoReleasePool或一些我不知道的东西,但是我的函数是否包含内存泄漏?还有在Swift中这样做而不是这样做的原因吗?
发布于 2021-06-22 05:16:28
如果您启用了ARC (多年来一直是新项目的默认设置),那么您就不需要发布NSAlert。实际上,如果您尝试这样做,代码将不会编译,因为当ARC被启用时,您不允许发送release消息。
如果你禁用了ARC,那么是的,你应该在[alert runModal]之后使用[alert release]。您需要release,因为当您发送alloc消息时,您已成为该邮件的所有者。
在Cocoa Core Competencies指南的“内存管理规则”中阅读更多内容。
如果您的项目已经包含Swift代码,则没有特别的理由使用Objective-C而不是Swift来创建此警报。
如果您的项目还没有包含Swift代码,那么将您的第一个Swift代码添加到项目中可能会大大增加您的编译时间。Objective-C的编译速度通常比Swift快得多。
https://stackoverflow.com/questions/68074796
复制相似问题