这是向 Cocoa 中的 NSCombobox 添加项目的正确方法吗?

2024-04-16

我是 Delphi 程序员,对 Cocoa 很陌生。 起初我尝试了这个:

-(void)awakeFromNib
{
    int i;
    NSString *mystr;
    for (i=1;i<=24;i++)
    {
      [comboHour addItemWithObjectValue:i];
    }
}

但这没有用。然后我尝试在谷歌上搜索但没有成功。 经过大约 30 分钟的实验,我得到了这个:

-(void)awakeFromNib
{
    int i;
    NSString *mystr;
    for (i=1;i<=24;i++)
    {
        mystr = [[NSString alloc]initWithFormat:@"%d",i];
        [comboHour addItemWithObjectValue:mystr];
        //[mystr dealloc];
    }
}

我的问题是:

  1. 这是正确的方法吗?
  2. 我是否总是需要分配新的 NSString 更改其值 整数 ?
  3. 当我取消注释 [mystr dealloc] 时, 为什么它不会运行?
  4. 分配时是否会导致内存泄漏 没有解除分配?
  5. 我在哪里可以找到基本教程,例如 这个在互联网上吗?

提前致谢


我是否总是需要分配新的 NSString 来更改其值 integer ?

一般来说是的;但是,有比使用更方便的方法来创建字符串(以及许多其他类型的对象)alloc and init(参见下面的自动释放池)

您可以将任何 Objective-C 对象类型传递给addItemWithObjectValue:, 包括NSString and NSNumber对象。这两个类都有许多方便的类方法,您可以使用它们来创建新实例,例如:

for (int i = 0; i < 24; ++i)
{
    [comboHour addItemWithObjectValue:[NSNumber numberWithInt:i]];
}

当我取消注释 [mystr dealloc] 时,为什么它不会运行?

从不打电话dealloc. Use release反而。

Cocoa 对象是引用计数的,就像 Delphi 中的 COM 对象一样。像COM一样,你调用release当你完成一个物体时。当一个对象不再有引用时,它会自动释放。

与 COM 不同,Cocoa 有“自动释放池”,例如,它允许您创建一个新的 NSString 实例,而不必担心调用release on it.

例如:[NSString stringWithFormat:@"%d", 123]创建一个“自动释放”字符串实例。你不必release完成后即可。对于所有返回对象的方法都是如此,除了new and init方法。

没有dealloc就alloc会导致内存泄漏吗?

是的,除非您使用垃圾收集。

在互联网上哪里可以找到这样的基本教程?

See 实用内存管理 http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html#//apple_ref/doc/uid/TP40004447

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这是向 Cocoa 中的 NSCombobox 添加项目的正确方法吗? 的相关文章

  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • 如何从 os x 终端启动屏幕保护程序(并锁定屏幕)?

    有没有办法从 bash 脚本启动屏幕保护程序 并锁定屏幕 你试过这个吗 System Library Frameworks ScreenSaver framework Resources ScreenSaverEngine app Cont
  • zsh:未找到命令:使用 Big Sur Mac 的终端上的 R

    我从官方 cran 网站安装了 R 我可以从 Rstudio 运行 R 但是当我尝试从终端使用 R 时 我得到以下结果 base ege Eges MBP R zsh command not found R base ege Eges MB
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • 开发者可以在 Windows 应用程序中使用 iCloud 吗?

    开发人员可以使用 Apple 的 iCloud API 在 Mac OS X 和 iOS 上的不同版本的应用程序之间同步应用程序数据 如果开发人员拥有 Windows 版本的应用程序 该版本是否也可以使用 iCloud 将应用程序数据与 M
  • 导入 matplotlib.pyplot 时出错

    当我跑步时import matplotlib pyplot as plt 我收到以下错误消息 ImportError Traceback most recent call last
  • 如何在 swiftUI (macOS) 中检测按键按下和释放

    除了标题之外没什么可说的 我希望能够在按下按键和释放按键时 在 macOS 上 在 swiftUI 视图中执行操作 在 swiftUI 中是否有任何好的方法可以做到这一点 如果没有 有什么解决方法吗 不幸的是 键盘事件处理是其中一个令人痛苦
  • 在 XCode 7.0.1 中设置 VTK 6.1

    所以 我遇到了问题VTK 可视化工具包 http www vtk org在 Mac OSX 上工作 特别是让它在XCode https developer apple com xcode 我让它工作并将在下面发布这个问题的答案 截至 201
  • Java Swing For mac 中的 DJ Native Swing 浏览器

    我有一个用 Swing 制作的 Java 应用程序 并且使用了一个 DJ Native Swing 浏览器 当我尝试在 OS X 上使用它时 它抛出了一个NoClassDefFoundError尽管我添加了 swt jar 但始终如此 有人
  • 获取 Mojave 上的鼠标坐标

    我有一个非常基本的小命令行应用程序 可以在下次单击鼠标时获取鼠标坐标 import
  • 使用 MacPorts 在 Mac OS X 10.5 上安装 PostgreSQL 时出错

    我已经使用 MacPorts 在几台不同的计算机上安装了 PostgreSQL 没有问题 但是当涉及到我自己的笔记本电脑时 我无法构建它 当我执行此命令时 sudo port install postgresql83 我收到此错误 chec
  • OSX bash 最小化窗口

    在 Mac 中并使用 bash shell 我想执行一个包含单个命令 启动 Jupyter Lab 的文件并立即最小化终端窗口 有没有办法在不安装第三方软件的情况下做到这一点 是的 只需使用osascript https ss64 com
  • Sqlite代码28“文件在打开时重命名”

    这是一个推论这个问题 https stackoverflow com questions 27784704 sqlite deadlock across multiple threads with different files nored
  • Codesign:什么是未密封内容?

    我刚刚升级到 XCode 6 并尝试构建我的开发者 ID 签名的 Mac 应用程序 但是 我现在收到以下协同设计错误 unsealed contents present in the root directory of an embedde
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • 如何确定 OS X 中的文件编码?

    我正在尝试将一些 UTF 8 字符输入到 LaTeX 文件中TextMate http en wikipedia org wiki TextMate 它说它的默认编码是UTF 8 但LaTeX似乎不理解它们 Running cat my f
  • 准确地从屏幕上的像素获取颜色并转换其颜色空间

    我需要从屏幕上的像素获取颜色并转换其颜色空间 我遇到的问题是 将值与数字色度计应用程序进行比较时 颜色值不相同 create a 1x1 image at the mouse position if let image CGImage CG
  • xcode 4 垃圾收集已删除?

    我正在学习 Xcode 和 Objective C 但是我正在阅读的书使用的是旧版本 3 2 的 Xcode 其中一章完全致力于内存和泄漏 说我需要通过 项目设置 gt 构建 打开垃圾收集 但是 我找不到垃圾收集设置 它已被删除还是我只是错

随机推荐

  • 如何向 AWS 根账户 MFA 添加更多设备

    我的 iPhone 中已经安装了 Google 身份验证器 并且正在使用它登录我的 AWS 根账户 我想添加使用我的 Android 手机通过 MFA 登录的功能 并使用相应的令牌生成器 Android 应用程序 是否可以添加第二个设备以及
  • 具有多个参数的 Laravel FindOrNew

    我使用 laravel FindOrNew 来获取具有两个参数的条目 或创建一个新参数 option App Option findOrNew user id gt this gt id option name gt optionName
  • 如何为一般 authError 消息定义 FlashHelper/Component 元素

    将 CakePHP 从 2 6 2 更新到 2 7 2 后 在创建 auth flash 消息时出现丢失密钥错误 如何定义默认的元素模板authError Since SessionComponent setFlash 已经已弃用 http
  • 向量集合上的 C++ iterator_adapter [重复]

    这个问题在这里已经有答案了 可能的重复 展平迭代器 https stackoverflow com questions 3623082 flattening iterator 我有一个某种类型的向量 比如 int 我想迭代一下 在向量中的元
  • 通过 Tweepy 获取 Twitter 中的所有关注者 ID

    是否有可能获得像麦当劳这样拥有超过 100 万粉丝的帐户的完整粉丝列表 我使用 Tweepy 并遵循代码 c tweepy Cursor api followers ids id McDonalds ids for page in c pa
  • 公开应用程序秘密到底有多糟糕?

    经过重大的巫术之后 我终于让分数 API 正常工作了 事实证明你必须设置Enhanced Auth Dialog to disabled或者 Facebook 会忽略您的publish actions允许 只是提醒一下 以防其他人遇到困难
  • 创建 Facebook 应用程序请求

    我试图在特定事件发生时从应用程序向用户发送消息 现在我有这个代码 param array message gt XYZ shared a file with you data gt additiona string data access
  • Linq to SQL 中的动态表名称

    大家好 我有一个可怕的数据库 我必须使用它 而 linq to sql 是我用来检索数据的选项 我试图通过根据用户选择输入不同的表名称来重用函数 但据我所知 无法修改 DataContext 查询中的 TEntity 或 Table 这是我
  • 使用flash动作脚本开发网络游戏

    简而言之 如果我想使用 Flash 技术开发在线游戏 你能告诉我一些很好的学习资源吗 包括3D游戏 您可以从新发布的开始Flash平台游戏技术中心 http www adobe com devnet games 在 Adob e Devne
  • 如何在 ionic 2(搜索栏)中进行自动完成

    我正在尝试在我的搜索栏中自动完成我到目前为止所做的事情 我有一个包含一些字符串的数组 然后我尝试在我的项目中列出我能够搜索的特定项目 但我的要求不是在列表中显示项目 我必须在单击搜索栏时 数组中的所有字符串都应该出现 并且我必须进行搜索
  • 帮助构建 boost asio ssl 示例

    我一直在研究 asio ssl 示例 链接如下 尽管尽了最大努力 我还是无法将 openssl 链接到 boost 示例中 ld 的输出是 ld 缺少 libssl a 中的符号 我无法弄清楚的是 我发现 libssl a 中带有 nm 的
  • cudaMemcpyToSymbol 的问题

    我正在尝试复制到恒定内存 但我不能 因为我对 cudaMemcpyToSymbol 函数的用法有误解 我正在努力追随this http developer download nvidia com compute cuda 4 1 rel t
  • 在 Scala 中是否有更好的方法来提升 PartialFunction?

    我偶尔会遇到以下模式 我基本上有一个PartialFunction SomeType AnotherType 并希望将其视为Function SomeType Option AnotherType eg def f s SomeType O
  • jQuery:有一种方法可以将颜色(色调)应用于图像吗?

    有没有一种方法可以使用 jQ 或某些插件对图像进行着色 应用色调 谢谢 我能想到的最简单的方法是在图像上覆盖一个半透明的 div 一个小例子 HTML div class overlay div img src img jpg CSS ov
  • 使用 ADODB 记录集执行联接更新查询

    在下面的代码中 我想将 ADODB 记录集 rs3 连接到表 tblValueChain10 并根据 ADODB 记录集 rs3 中提取的值更新 3 个不同的列 目前 更新查询未返回任何内容 Dim st Sql3 As String Di
  • Metro IndexedDB,浏览数据库

    我正在尝试使用 IndexedDB 将数据存储在 Windows 8 的 Metro 应用程序中 我希望能够浏览数据库 以监视我的操作是否按预期修改数据 所以我的问题是 有没有办法查看地铁应用程序 IE10 的实际数据库 类似于 Chrom
  • 使用“->”运算符时保留访问权限

    我有两节课 template
  • 使地图或列表在 Web UI 中可观察

    我可以通过在 Dart 代码中使用 observable 声明来使 String 或 num 类型可观察 observable var x and html 中的语法 div x x div But observable不适用于列表和地图
  • Web 部署任务在 Web 部署中失败

    我在将网站部署到域时遇到问题 它是在线的 但正在使用实体框架复制数据库中的条目 我删除了它以重新分配离线网站 但当我部署时出现错误 我尝试清理解决方案并重建 但它不起作用 它在部署时抛出异常 Web 部署任务失败 未知的 ProviderO
  • 这是向 Cocoa 中的 NSCombobox 添加项目的正确方法吗?

    我是 Delphi 程序员 对 Cocoa 很陌生 起初我尝试了这个 void awakeFromNib int i NSString mystr for i 1 i lt 24 i comboHour addItemWithObjectV