Objective-C 内存管理的问题(关于NSString)
在OC程序中,NSString*name=@"zhangsan";这么去定义的时候,后面name这个对象还需要release么?如果NSString*fullname=[...
在OC程序中, NSString* name = @"zhangsan";这么去定义的时候,后面 name这个对象还需要release么?
如果NSString * fullname = [NSString initWithFormat:@"%@ %@",firstname,secondname];这么定义一个NSString对象,后面需要release,程序能够自动释放内存么 展开
如果NSString * fullname = [NSString initWithFormat:@"%@ %@",firstname,secondname];这么定义一个NSString对象,后面需要release,程序能够自动释放内存么 展开
2个回答
展开全部
NSString* name = @"zhangsan"去定义,属于常量类型,程序会把这部分数据放到全局变量存储区,你不用释放,你也释放不掉,不信你可以release以后再查看它的retainCount;
[[NSString alloc] ] initWithFormat:@"%@ %@",firstname,secondname];这种类型的需要释放,因为alloc过了,程序需要手动用release释放,你写的那种方法不正确,没有直接init的。
[NSString stringWithFormat:@"%@ %@",firstname,secondname];这种类型生成的NSString是autorelease类型的变量,不需要释放,程序一次runLoop结束后就会释放。你不能用release释放。
[[NSString alloc] ] initWithFormat:@"%@ %@",firstname,secondname];这种类型的需要释放,因为alloc过了,程序需要手动用release释放,你写的那种方法不正确,没有直接init的。
[NSString stringWithFormat:@"%@ %@",firstname,secondname];这种类型生成的NSString是autorelease类型的变量,不需要释放,程序一次runLoop结束后就会释放。你不能用release释放。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询