我是Delphi程序员,也是Cocoa的新手.起初我试过这个:
-(void)awakeFromNib
{
int i;
NSString *mystr;
for (i=1;i<=24;i++)
{
[comboHour addItemWithObjectValue:i];
}
}
Run Code Online (Sandbox Code Playgroud)
但它没有用.然后我试着在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];
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
提前致谢
Dar*_*ren 11
我是否总是需要分配新的NSString来从整数中更改其值?
一般是的; 但是,有更方便的方法来创建字符串(以及许多其他类型的对象)而不是使用alloc和init(请参阅下面的自动释放池)
您可以将任何Objective-C对象类型传递给addItemWithObjectValue:包括对象NSString和NSNumber对象.这两个类都有许多方便的类方法可用于创建新实例,例如:
for (int i = 0; i < 24; ++i)
{
[comboHour addItemWithObjectValue:[NSNumber numberWithInt:i]];
}
Run Code Online (Sandbox Code Playgroud)
当我取消注释[mystr dealloc]时,为什么它不会运行?
从不打电话dealloc.请release改用.
Cocoa对象是引用计数的,就像Delphi中的COM对象一样.和COM一样,release当你完成一个对象时就会调用.当一个对象没有更多引用时,它会自动释放.
与COM不同,Cocoa具有"自动释放池",例如,它允许您创建一个新的NSString实例,而不必担心调用release它.
例如:[NSString stringWithFormat:@"%d", 123]创建一个"自动释放"的字符串实例.完成后你不需要release它.这是返回一个对象的,除了所有的方法真new和init方法.
没有dealloc会导致内存泄漏吗?
是的,除非您使用垃圾收集.
我在哪里可以在互联网上找到这样的基础教程?
请参阅实用内存管理
| 归档时间: |
|
| 查看次数: |
7642 次 |
| 最近记录: |