gpt4 book ai didi

ios - Struct 中的 NSDate 可能导致内存泄漏

转载 作者:行者123 更新时间:2023-11-28 23:03:52 25 4
gpt4 key购买 nike

//h file

struct runSTRUCT{
NSDate *RunDateTime;
} ;

//m file

struct runSTRUCT run;

- (void)viewDidLoad {
[super viewDidLoad];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.timeStyle = NSDateFormatterNoStyle;
[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"];
run.RunDateTime = [dateFormatter dateFromString:@"12/02/2012 12:22"];
NSString *dateTimeStr = [dateFormatter stringFromDate:run.RunDateTime];
[dateFormatter release];
}

一切正常。然后当我点击一个按钮并根据日期创建一个字符串时,它会给我 EXC_BAD_ACCESS。

-(IBAction)respondButtonPressed:(id)sender{
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
dateFormatter2.timeStyle = NSDateFormatterNoStyle;
[dateFormatter2 setDateFormat:@"MM/dd/yyyy HH:mm"];
NSString *dateTimeStr = [dateFormatter2 stringFromDate:run.RunDateTime];
[dateFormatter2 release];
}

当我查看控制台并打印描述时,它通常显示以下两种情况之一:

  1. 正在调试的程序在从 GDB 调用的函数中发出信号。GDB 已将上下文恢复到调用前的状态。要更改此行为,请使用“set unwindonsignal off”包含函数 (CFShow) 的表达式的计算将被放弃。正在调试的程序在从 GDB 调用的函数中发出信号。GDB 已将上下文恢复到调用前的状态。要更改此行为,请使用“set unwindonsignal off”包含函数 (CFShow) 的表达式的计算将被放弃。

  2. 或者“run.runDateTime”是一些随机变量

编辑:我不确定我是否将它们放在正确的位置,因为它仍然不起作用(我可能没有)。

- (void)viewDidLoad {
[super viewDidLoad];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.timeStyle = NSDateFormatterNoStyle;
[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"];
run.RunDateTime = [dateFormatter dateFromString:@"12/02/2012 12:22"];
NSString *dateTimeStr = [dateFormatter stringFromDate:run.RunDateTime];

[run.RunDateTime retain];

[dateFormatter release];
}

-(IBAction)respondButtonPressed:(id)sender{
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
dateFormatter2.timeStyle = NSDateFormatterNoStyle;
[dateFormatter2 setDateFormat:@"MM/dd/yyyy HH:mm"];
NSString *dateTimeStr = [dateFormatter2 stringFromDate:run.RunDateTime];

[dateFormatter2 release];
}

我在结构中也有几个 NSString,它们工作正常。

最佳答案

从日期格式化程序分配/创建 RunDateTime 后,您需要保留它。

 [run.RunDateTime retain];

确保在你的 dealloc 中释放它!

关于ios - Struct 中的 NSDate 可能导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9619820/

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