gpt4 book ai didi

objective-c - NSString 分配/释放/保留

转载 作者:太空狗 更新时间:2023-10-30 04:02:13 27 4
gpt4 key购买 nike

aNSString 的实例。我想如果我在释放后打印一个字符串,它会使应用程序崩溃。相反,它返回分配给它的正确值。我的问题是,我们是否应该在释放对象后获取对象的值?如果不是,为什么我能够看到 a 的值,即使在它被释放之后也是如此?

.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
NSString *a;
}

@end

.m

- (void)viewDidLoad
{
[super viewDidLoad];

a=[[NSString alloc]initWithString:@"abc"];

// Do any additional setup after loading the view, typically from a nib.
}

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

NSLog(@"String %@",a);
[a release];
NSLog(@"release %@",a);
[a retain];
NSLog(@"retain %@",a);
}

输出:-

2012-08-24 14:15:49.501 a[1176:f803] string abc
2012-08-24 14:15:53.404 a[1176:f803] release abc
2012-08-24 14:15:55.325 a[1176:f803] retain abc

最佳答案

@"abc"是常量,所以永远不会释放

感受不同:

a = [[NSString alloc] initWithFormat:@"%d", 123];

它给我崩溃或释放主要输出,因为它指的是一些内存块

关于objective-c - NSString 分配/释放/保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12106110/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com