Iphone 目标-新秀NSC字符串问题

Iphone 目标-新秀NSC字符串问题,iphone,objective-c,ios,string,Iphone,Objective C,Ios,String,我有以下代码: // Fill out the email body text NSString *emailBody = (@"Name:%@\nNumber of People:\nDate:", name.text); NSLog(@"%@", emailBody); 如您所见,我正试图在“name:”之后将name.text附加到电子邮件正文中。但是,NSLog只输出name.text中包含的字符串,而不输出电子邮件正文的其余部分。我在这里做错了什么,代码删除了name.text之外的

我有以下代码:

// Fill out the email body text
NSString *emailBody = (@"Name:%@\nNumber of People:\nDate:", name.text);
NSLog(@"%@", emailBody);
如您所见,我正试图在“name:”之后将name.text附加到电子邮件正文中。但是,NSLog只输出name.text中包含的字符串,而不输出电子邮件正文的其余部分。我在这里做错了什么,代码删除了name.text之外的字符串的其余部分

例如,如果name.text包含文本“Jack”,那么NSLog将只输出“Jack”,而不输出:

这就是我要找的

谁能告诉我我做错了什么

谢谢


杰克

你应该写

NSString *emailBody = [@"Name:%@\nNumber of People:\nDate:" stringByAppendingString:name.text];
或者,如果它没有编译,

NSString *emailBody = [@"Name:%@\nNumber of People:\nDate:" stringByAppendingString:name.text];

[[NSString stringWithString:@“Name:%@\n人数:\n日期:]stringByAppendingString:Name.text]
使用+stringWithFormat方法:

NSString *emailBody = [NSString stringWithFormat:@"Name:%@\nNumber of People:\nDate:", name.text];
您现在拥有的是有效代码,但它不能满足您的要求:

(@"Name:%@\nNumber of People:\nDate:", name.text);

调用逗号运算符-它计算第一个参数,丢弃它并返回第二个参数,因此,
emailBody
最终将填充
name.text
value

通常,您希望按照建议使用stringWithFormat,这将创建一个遵循现有格式的自动释放字符串,或者您也可以改用initWithFormat,这将创建一个字符串,您可以手动管理该字符串,以便在必要时获得更好的内存行为

有些书会坚持认为,对于内存有限的iphone,您对自动释放对象的依赖程度并不超过绝对必要的程度,因此您通常会发现:

NSString *emailBody = [[NSString alloc] initWithFormat:@"Name:%@\nNumber of People:\nDate:", name.text];
然后,您可以使用“emailBody”,并在完成后立即将其放入以下行:

[emailBody release];

一般来说,这是一个好习惯。

Meh。避免自动释放对象超过“绝对必要”是过分的,不管“某些书”可能坚持什么。也许选择其他的书?为什么它会“不编译”
-stringByAppendingString:
是一种
NSString
方法@“名称:%@\n人数:\n日期:”是一个NSString。正如《字符串编程指南》所说,“您也可以像发送任何其他字符串一样直接向字符串常量发送消息”。是的,感谢您的澄清。我只是不记得了,所以添加了可能的解决方法:)…并解释了要引导的逗号运算符