iPhone-程序接收到信号:0-在设备上,但不在模拟器上
我确信这与记忆有关,但我似乎不知道是什么变量导致了我的问题 我会尽我所能释放我分配的一切。如果这个循环运行365次,而不是730次(一年中的运行天数),那么它似乎可以正常工作 下面是失败的代码片段。。当程序在设备上结束时,它永远不会退出循环 非常感谢您的帮助。谢谢 NSMutableArray*dtArray=[[NSMutableArray alloc]init]iPhone-程序接收到信号:0-在设备上,但不在模拟器上,iphone,cocoa-touch,xcode,memory-management,Iphone,Cocoa Touch,Xcode,Memory Management,我确信这与记忆有关,但我似乎不知道是什么变量导致了我的问题 我会尽我所能释放我分配的一切。如果这个循环运行365次,而不是730次(一年中的运行天数),那么它似乎可以正常工作 下面是失败的代码片段。。当程序在设备上结束时,它永远不会退出循环 非常感谢您的帮助。谢谢 NSMutableArray*dtArray=[[NSMutableArray alloc]init] double frequencyInterval = [Frequency doubleValue]; int i
double frequencyInterval = [Frequency doubleValue];
int i;
NSString *newDateString = @"";
NSString *sqlString = [NSString stringWithFormat:@"insert into ToDoList (TaskId, DueDate, Completed, Notes, Status, CompletedDate, Frequency) values ('%i', \"%@\", '0',\"%@\",'' ,'0', %@);", (int)self.AddTaskId, origDueDateString, NotesField, todoFrequency];
NSDate *nDate = dueDate;
NSDateFormatter *f3 = [[NSDateFormatter alloc] init];
[f3 setDateFormat:@"yyyy-MM-dd"];
for(i=0; i< 1000; i++) {
newDate = [newDate addTimeInterval:(frequencyInterval*86400)];
newDateString = [f3 stringFromDate:newDate];
if ([endRecurDate compare:newDate] == NSOrderedDescending)
{
[dtArray addObject:newDate];
if (i == 0)
{
sql = [sqlString stringByAppendingString:[NSString stringWithFormat:@"insert into ToDoList (TaskId, DueDate, Completed, Notes, Status, CompletedDate, Frequency) values ('%i', \"%@\", '0',\"%@\",'' ,'0', %@)", (int)self.AddTaskId, newDateString, NotesField, todoFrequency]];
}
else
{
sql = [sql stringByAppendingString:[NSString stringWithFormat:@";insert into ToDoList (TaskId, DueDate, Completed, Notes, Status, CompletedDate, Frequency) values ('%i', \"%@\", '0',\"%@\",'' ,'0', %@)", (int)self.AddTaskId, newDateString, NotesField, todoFrequency]];
}
//stringByAppendingString
}
else
{
break;
}
}
[dtArray release];
[f3 release];
double Frequency interval=[Frequency doubleValue];
int i;
NSString*newDateString=@;
NSString*sqlString=[NSString stringWithFormat:@“插入到ToDoList(任务ID、DueDate、已完成、备注、状态、已完成日期、频率)值(“%i”、\“%@\”、“0”、\“%@\”、“”、'0'、%@);“,(int)self.AddTaskId、origDueDateString、NotesField、todoFrequency];
NSDate*nDate=dueDate;
NSDateFormatter*f3=[[NSDateFormatter alloc]init];
[f3 setDateFormat:@“yyyy-MM-dd”];
对于(i=0;i<1000;i++){
newDate=[newDate addTimeInterval:(frequencyInterval*86400)];
newDateString=[f3 stringFromDate:newDate];
if([endRecurDate比较:newDate]==取消下移)
{
[dtArray addObject:newDate];
如果(i==0)
{
sql=[sqlString stringByAppendingString:[NSString stringWithFormat:@“插入到ToDoList(任务ID、DueDate、Completed、Notes、状态、CompletedDate、频率)值(“%i”、“%@\”、“0”、“%@\”、“(int)self.AddTaskId、newDateString、NotesField、todoFrequency]”);
}
其他的
{
sql=[sql stringByAppendingString:[NSString stringWithFormat:@];插入到ToDoList(TaskId、DueDate、Completed、Notes、Status、CompletedDate、Frequency)值(“%i”、\“%@\”、“0”、\“%@\”、“(int)self.AddTaskId、newDateString、NotesField、ToDofResquency)];
}
//stringByAppendingString
}
其他的
{
打破
}
}
[dtArray release];
[f3释放];
首先,您不需要将newDateString
初始化为@“
;简单地说就够了
我没有注意到任何明显的内存泄漏,但是您在语句中循环了1000次。在完成整个循环之前,所有自动释放的对象可能不会被释放,因此这可能就是您使用太多内存的原因。要在循环期间释放它们,请执行以下操作:
for(i=0; i< 1000; i++) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
/* your code here */
[pool drain];
}
(i=0;i<1000;i++)的{
NSAutoreleasePool*池=[[NSAutoreleasePool alloc]init];
/*你的代码在这里*/
[泳池排水沟];
}
玩一下这个;您可能不需要每次执行循环时都清空池,但您可以构建一个计数器,每隔25个循环左右清空池。首先,您不需要将newDateString
初始化为@
;简单地说就够了
我没有注意到任何明显的内存泄漏,但是您在语句中循环了1000次。在完成整个循环之前,所有自动释放的对象可能不会被释放,因此这可能就是您使用太多内存的原因。要在循环期间释放它们,请执行以下操作:
for(i=0; i< 1000; i++) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
/* your code here */
[pool drain];
}
(i=0;i<1000;i++)的{
NSAutoreleasePool*池=[[NSAutoreleasePool alloc]init];
/*你的代码在这里*/
[泳池排水沟];
}
玩一下这个;您可能不需要每次执行循环时都排空池,但您可以构建一个计数器并每隔25个循环左右排空池。也许我没有正确地处理这个问题,但我没有在此循环中自动释放任何对象。您没有,但您调用的许多方法都返回自动释放的对象。每次调用stringByAppendingString、stringFromDate等时,返回的对象都会自动删除。根据我的统计,循环中有六个对象,根据字符串的长度,这几乎肯定是问题所在。也许我没有正确地处理这个问题,但我没有自动删除循环中的任何对象。你没有,但是你调用的许多方法都返回自动删除的对象。每次调用stringByAppendingString、stringFromDate等时,返回的对象都会自动删除。据我统计,循环中有六个对象,根据字符串的长度,这几乎肯定是问题所在。