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

这是在Cocoa中向NSCombobox添加项目的正确方法吗?,第1张

概述我是Delphi程序员,也是 Cocoa的新手. 起初我试过这个: -(void)awakeFromNib{ int i; NSString *mystr; for (i=1;i<=24;i++) { [comboHour addItemWithObjectValue:i]; }} 但它没有用.然后我试着在Google上搜索但没有运气. 经过 我是Delphi程序员,也是 Cocoa的新手.
起初我试过这个:

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

但它没有用.然后我试着在Google上搜索但没有运气.
经过大约30分钟的试验,我来了:

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

我的问题是:

>这是正确的方法吗?
>我总是需要分配新的
Nsstring从中更改其值
整数 ?
>当我取消注释[mystr dealloc]时,
为什么它不会运行?
>它是否会导致内存泄漏
没有dealloc?
>我在哪里可以找到像这样的基本教程
这在互联网上?

提前致谢

解决方法

Do I always need to alloc new Nsstring to change its value from integer ?

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

您可以将任何Objective-C对象类型传递给addItemWithObjectValue:,包括Nsstring和NSNumber对象.这两个类都有许多方便的类方法可用于创建新实例,例如:

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

When I uncomment [mystr dealloc],why it won’t run ?

永远不要叫dealloc.请改用.

Cocoa对象是引用计数的,就像Delphi中的COM对象一样.像COM一样,当你完成一个对象时你就调用release.当一个对象没有更多引用时,它会自动释放.

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

例如:[Nsstring stringWithFormat:@“%d”,123]创建一个“自动释放”的字符串实例.完成后你不必释放它.除了new和init方法之外,返回对象的所有方法都是如此.

Does it cause memory leak to alloc without dealloc ?

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

Where can I find basic tutorial like this on internet ?

见Practical Memory Management

总结

以上是内存溢出为你收集整理的这是在Cocoa中向NSCombobox添加目的正确方法吗?全部内容,希望文章能够帮你解决这是在Cocoa中向NSCombobox添加项目的正确方法吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1071039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存