objective-c - 在 Objective C 中创建 NSAlert 时,我需要释放 NSAlert 吗?
问题描述
所以我做了一个函数:
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 中这样做?
解决方案
如果您启用了 ARC(多年来一直是新项目的默认设置),那么您不需要发布NSAlert
. release
实际上,如果您尝试编译,代码将无法编译,因为启用 ARC 时不允许您发送消息。
如果您禁用了 ARC,那么是的,您应该[alert release]
在[alert runModal]
. 您需要这样做,release
因为您在发送alloc
消息时已成为它的所有者。
在Cocoa 核心能力指南中的“内存管理规则”中阅读更多内容。
如果您的项目已经包含 Swift 代码,那么没有特别的理由使用 Objective-C 而不是 Swift 来创建此警报。
如果您的项目还没有包含 Swift 代码,那么将您的第一个 Swift 代码添加到项目中可能会比您想要的更多地增加编译时间。Objective-C 的编译速度通常比 Swift 快得多。
推荐阅读
- javascript - 如何使用带有 Codemirror 键绑定的 Ctrl+S 提交表单
- python - 提取 bs4 元素中的文本
- magento2 - 将 magento 1 转换为 magento 2
- javascript - Wordpress 媒体按钮设置
- android - 无法解析“?attr/actionBarSize”
- azure - Azure Maps 地理编码接口
- ios - 获取 npm 错误!退出错误代码:128
- sql-server - 优化 SQL server 中运行乘法计算
- php - 如何在mysql中选择前第三行
- c - 从 Iup_FlatButton 中完全移除边框