-3
// Directly assigning the value.
NSString *str = [objDictionary objectForKey:@"attributeName"];

// Assigning with convenience method
NSString *str = [NSString stringWithFormat:@"%@", [objDictionary objectForKey:@"attributeName"]];

// Assigning after being owner to that object.
NSString *str = [[NSString alloc] initWithString:@"%@", [objDictionary objectForKey:@"attributeName"]];

在什么情况下,我们需要确定在代码中需要使用哪一个。???任何参考链接相同之间的区别???

或者有人可以深入回答这个问题吗???

谢谢您的帮助。

4

2 回答 2

3
NSString *str = [objDictionary objectForKey:@"attributeName"];

这是您希望使用分配了自动释放内存的局部变量的声明,即您无需担心内存分配/释放。

NSString *str = [NSString stringWithFormat:@"%@", [objDictionary objectForKey:@"attributeName"]];

当您需要在单个字符串中组合不同类型(即整数/浮点数)时,此方法很有用,例如

NSString *str = [NSString stringWithFormat:@"%@ and %d", [objDictionary objectForKey:@"attributeName"], 5];

这将导致“你的价值和 5”

NSString *str = [[NSString alloc] initWithString:@"%@", [objDictionary objectForKey:@"attributeName"]];

这是您分配内存的分配,您需要让该变量使用其他地方,因此它将一直存在,直到并且除非您释放该变量的内存。确保在分配内存时您自己释放内存,因为您是负责人。

对于进一步的详细研究,我建议您访问NSString 的文档,它可以让您了解可用的类/实例方法以及如何使用。

于 2012-05-03T06:40:27.983 回答
2

假设您的字典包含一个字符串,在 ARC 下,这些都是相同的。使用手动引用计数,前两个是自动释放的,最后一个是保留的。

对于参考指南,您不能比NSString 类参考做得更好。

于 2012-05-03T06:23:43.230 回答