Iphone UILabel中的stringWithFormat和多行文本
我的两个代码都很好…但我想知道…谁更好。。。 我用什么 第一个代码Iphone UILabel中的stringWithFormat和多行文本,iphone,ios,Iphone,Ios,我的两个代码都很好…但我想知道…谁更好。。。 我用什么 第一个代码 NSString *advance=[[NSString alloc]initWithFormat :@"Pay in Advance Rs %i",pro.s_advance ]; UILabel *label1 =[[UILabel alloc]initWithFrame:CGRectMake(10,5,200,40)]; label1.text=advance; [cell.contentView addSubview:l
NSString *advance=[[NSString alloc]initWithFormat :@"Pay in Advance Rs %i",pro.s_advance ];
UILabel *label1 =[[UILabel alloc]initWithFrame:CGRectMake(10,5,200,40)];
label1.text=advance;
[cell.contentView addSubview:label1];
[label1 release];
[advance release];
第二个代码是
UILabel *label1 =[[UILabel alloc]initWithFrame:CGRectMake(10,5,200,40)];
label1.text=[NSString stringWithFormat:@"Pay in Advance Rs %i",pro.s_advance ];
[cell.contentView addSubview:label1];
[label1 release];
这两组代码之间没有功能上的区别,除了一些非常微妙/不相关的内存语义
但我个人会使用第二个,因为它更短,更容易阅读。第一个和第二个代码是相等的 唯一的区别是,在第二个中,您正在创建类型为
NSString
的autoreleased
对象。在第一个版本中,您手动释放类型为NSString
的对象,因为它不是autorelease
:[advancerelease]代码>
因此,没有内存管理问题,您可以使用其中任何一种方法
我更喜欢第二个,因为代码会更干净。…谢谢你的建议…在第一个代码中…我释放了字符串..但在第二个代码中。。我没有释放字符串…没问题吗?在第一个示例中,您使用[NSString alloc]
创建字符串,该字符串将返回一个您必须稍后释放的对象。在第二个示例中,您使用[NSString string…]
创建字符串,该字符串将返回一个将自动为您释放的对象。大多数情况下的一般规则是,任何使用“alloc”或“copy”或“new”或“retain”创建的对象都必须由您手动释放,任何其他对象都将自动释放。我建议您在iOS 5 SDK下编译,它将为您处理内存管理,这样您就不必真正处理哪一个更好。