我在这里指定一个对象是同一对象的衍生物。这有什么问题吗?
NSString *urlString =[TBXML textForElement:tempElement];
urlString = [urlString stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
urlString = [urlString stringByReplacingOccurrencesOfString:@"&" withString:@"&"];
答案 0 :(得分:2)
是的,没关系。运行此代码后,内存中将有三个NSString
个对象:
[TBXML textForElement:tempElement]
[urlString stringByReplacingOccurrencesOfString:@" " withString:@"%20"]
[urlString stringByReplacingOccurrencesOfString:@"&" withString:@"&"]
每个人的保留计数为1,但会自动释放。由于你没有保留对1.或2.的引用,因此你无法在之后增加其保留计数,因此在run loop的当前迭代结束时,它们将被自动释放,保留计数将变为0,并且它们将被取消分配。
第三个是同一条船,但你确实有一个参考,所以如果你做了一些事情来增加其保留计数(例如,将其分配给strong
@property或将其添加到NSArrray
)然后在运行循环的迭代之后它可能继续存在。或者,如果您只是将它用作某个函数的参数(可能稍后在NSString stringWithFormat:
中使用它,它将与其他两个一起被释放。
答案 1 :(得分:1)
没问题 - 没关系。
如果您编写参考计数,那么您需要注意参考,静态分析仪可以提供帮助。