起初我试过这个:
-(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添加项目的正确方法吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)