У меня проблема с тем, как я обрабатываю управление памятью в iphone. Пожалуйста, помогите мне. У меня заканчиваются идеи. Я пытался играть с помощью метода ниже, но у него начались утечки, когда Я пытаюсь выделить строки для объектов (например, распределение для sid, first_name и т. Д.). Я не могу понять, как это сделать ... и это метод, когда я получаю все контакты из службы и вставляю он в базу данных. Он потребляет больше памяти, которую я понял, запустив инструмент распределения на iphone и мое приложение на сбои iphone. Пожалуйста, помогите мне, ребята. Какое лучшее решение для этого. Я думаю, что мое приложение больше потребляет память, но не уверен, где ее искать. Я могу опубликовать любой код, если это не понятно.Инструмент распределения объектов на iphone
- (void) get_entry_listHandler: (id) value{
NSString *salutation,*sugar_id,*first_name,*last_name,*title1,*department,*phone_home,*phone_mobile,*phone_work,*phone_other,*phone_fax,*assistant,*assistant_phone,*primary_address_street,*primary_address_city,*primary_address_state,*primary_address_postalcode,*custom;
NSString *primary_address_country,*alt_address_street,*alt_address_city,*alt_address_state,*alt_address_postalcode,*alt_address_country,*date_entered,*date_modified,*deleted,*do_not_call,*birthdate,*lead_source,*description,*email1,*email2,*account_name,*account_id,*id1;
// Handle errors
if([value isKindOfClass:[NSError class]]) {
NSLog(@"%@", value);
return;
}
// Handle faults
if([value isKindOfClass:[SoapFault class]]) {
NSLog(@"%@", value);
return;
}
// Do something with the SCRMget_entry_list_result* result
SCRMget_entry_list_result* result = (SCRMget_entry_list_result*)value;
//NSLog(@"get_entry_list returned the value: %@", result);
//NSLog(@"%@", result.entry_list);
NSLog(@"%@", result.error);
SCRMsugarsoap* service = [[SCRMsugarsoap alloc] initWithUrl:serverURL];
SCRMentry_value* entry;
for(NSString * myStr in result.entry_list) {
entry = (SCRMentry_value*)myStr;
//NSLog(@"1st %@",entry.name_value_list);
//NSLog(@"1st %@",entry.id);
//NSLog(@"1st %@",entry.module_name);
for(NSString * myStr1 in entry.name_value_list) {
SCRMname_value* value1 = (SCRMname_value*)myStr1;
if ([value1.name isEqualToString:@"id"])
sugar_id = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"salutation"])
salutation = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"first_name"])
first_name = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"last_name"])
last_name = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"title"])
title1 = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"department"])
department = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"phone_home"])
phone_home = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"phone_mobile"])
phone_mobile = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"phone_work"])
phone_work = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"phone_other"])
phone_other = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"phone_fax"])
phone_fax = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"assistant"])
assistant = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"assistant_phone"])
assistant_phone = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"primary_address_street"])
primary_address_street = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"primary_address_city"])
primary_address_city = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"primary_address_state"])
primary_address_state = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"primary_address_postalcode"])
primary_address_postalcode = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"primary_address_country"])
primary_address_country = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"alt_address_street"])
alt_address_street = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"alt_address_city"])
alt_address_city = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"alt_address_state"])
alt_address_state = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"alt_address_postalcode"])
alt_address_postalcode = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"alt_address_country"])
alt_address_country = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"date_entered"])
date_entered = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"date_modified"])
date_modified = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"deleted"])
deleted = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"do_not_call"])
do_not_call = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"birthdate"])
birthdate = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"lead_source"])
lead_source = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"description"])
description = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"email1"])
email1 = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"email2"])
email2 = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"account_name"])
account_name = [[NSString alloc] initWithFormat: @"%@",value1.value];
else if ([value1.name isEqualToString:@"account_id"])
account_id = [[NSString alloc] initWithFormat: @"%@",value1.value];
else
custom = [[NSString alloc] initWithFormat: @"%@",value1.value];
}
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setFormatterBehavior:NSDateFormatterBehavior10_4];
[df setDateFormat:@"yyy-MM-dd HH:mm:ss"];
NSDate *date_moded = [df dateFromString:date_modified];
NSDate *lastSync = [df dateFromString:lastSyncTime];
NSDate *date_enter = [df dateFromString:date_entered];
[df release];
if ([[date_moded laterDate:lastSync]isEqualToDate:date_moded] && lastSyncTime != nil && [date_enter isEqualToDate:date_moded])
id1 = [[NSString alloc]initWithFormat:@"%d",primaryKeyCount];
else if ([[date_moded laterDate:lastSync]isEqualToDate:date_moded] && lastSyncTime != nil)
id1 = [db getPrimaryKey:sugar_id];
else
id1 = [[NSString alloc]initWithFormat:@"%d",primaryKeyCount];
[db insertRecordIntoTableNamed: @"Contacts" withField1: @"id" field1Value: id1 andField2: @"sugar_id" field2Value: sugar_id
andField3: @"salutation" field3Value: salutation andField4: @"first_name" field4Value: first_name
andField5: @"last_name" field5Value: last_name andField6: @"title" field6Value: title1
andField7: @"department" field7Value: department andField8: @"phone_home" field8Value: phone_home
andField9: @"phone_mobile" field9Value: phone_mobile andField10: @"phone_work" field10Value: phone_work
andField11: @"phone_other" field11Value: phone_other andField12: @"phone_fax" field12Value: phone_fax
andField13: @"assistant" field13Value: assistant andField14: @"assistant_phone" field14Value: assistant_phone
andField15: @"primary_address_street" field15Value: primary_address_street andField16: @"primary_address_city" field16Value: primary_address_city
andField17: @"primary_address_state" field17Value: primary_address_state andField18: @"primary_address_postalcode" field18Value: primary_address_postalcode
andField19: @"primary_address_country" field19Value: primary_address_country andField20: @"alt_address_street" field20Value: alt_address_street
andField21: @"alt_address_city" field21Value: alt_address_city andField22: @"alt_address_state" field22Value: alt_address_state
andField23: @"alt_address_postalcode" field23Value: alt_address_postalcode andField24: @"alt_address_country" field24Value: alt_address_country
andField25: @"date_entered" field25Value: date_entered andField26: @"date_modified" field26Value: date_modified
andField27: @"deleted" field27Value: deleted andField28: @"do_not_call" field28Value: do_not_call
andField29: @"birthdate" field29Value: birthdate andField30: @"lead_source" field30Value: lead_source
andField31: @"description" field31Value: description andField32: @"email1" field32Value: email1
andField33: @"email2" field33Value: email2 andField34: @"account_name" field34Value: account_name
andField35: @"account_id" field35Value: account_id andField36: @"custom" field36Value: custom];
primaryKeyCount++;
currentCount++;
//NSLog(@"%D",i);
}
[salutation release];
[sugar_id release];
[first_name release];
[last_name release];
[title1 release];
[department release];
[phone_home release];
[phone_mobile release];
[phone_work release];
[phone_fax release];
[phone_other release];
[assistant release];
[assistant_phone release];
[primary_address_street release];
[primary_address_city release];
[primary_address_state release];
[primary_address_postalcode release];
[primary_address_country release];
[alt_address_street release];
[alt_address_city release];
[alt_address_state release];
[alt_address_postalcode release];
[alt_address_country release];
[custom release];
[date_entered release];
[deleted release];
[do_not_call release];
[birthdate release];
[lead_source release];
[description release];
[email1 release];
[email2 release];
[account_name release];
[account_id release];
float expected = (float) contactEntries;
float gotSoFar = (float) currentCount;
syncViewController.progressView.progress = ((float)((gotSoFar - 1)/(expected + 1)));
syncViewController.progressLabel.text=[NSString stringWithFormat:@"Syncing %d Contacts",contactEntries];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
integer = [NSNumber numberWithInt:primaryKeyCount];
[defaults setObject:integer forKey:@"primaryKeyCount"];
[defaults synchronize];
moduleViewController.db = db;
int a = result.next_offset;
int b = contactEntries;
while (result.result_count == 20 /*&& result.next_offset < contactEntries*/) {
if (lastSyncTime == nil) {
[service get_entry_list:self action:@selector(get_entry_listHandler:) session:sessionId module_name: @"Contacts" query: @"" order_by: @"" offset: result.next_offset select_fields: [[[SCRMselect_fields alloc] init]autorelease] max_results: contactEntries deleted: 0];
[service release];
return;
//break;
}
else {
[service get_entry_list:self action:@selector(get_entry_listHandler:) session:sessionId module_name: @"Contacts" query: finalQuery order_by: @"" offset: result.next_offset select_fields: [[[SCRMselect_fields alloc] init]autorelease] max_results: contactEntries deleted: 0];
[service release];
return;
//break;
}
}
if (a >= b) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[settingsViewController.navigationController pushViewController:moduleViewController animated:YES];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:NO forKey:@"reset"];
[defaults synchronize];
[finalQuery release];
}
/*else if (a >= b && syncing == YES) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[moduleViewController reload];
}*/
[service release];
[id1 release];
}
EDIT:
Я избавилась от всех утечек, но может ли один пожалуйста, скажите мне, как проверить прибор при распределении объектов в iphone..Please см ниже screenshot..My приложение получает разбился, когда он загружает все контакты 4200, и контакты никогда не отображаются в представлении таблицы. Какая может быть проблема. Я уверен, что место, из которого мои контакты сохранены в базе данных, является утечкой. скриншот, что именно я должен искать .. это общее распределение или живое..пожалуйста, дайте мне знать, ребята. Я полностью измучен. Это многое для вашего времени.
Вы действительно не должны редактировать свой ответ после проверки других ответов. Или, по крайней мере, укажите, что вы скопировали из другого ответа. Это поведение трусости. – taskinoor
Я отредактировал скриншот..пожалуйста, помогите мне с друзьями .. – racharambola
@taskinoor: Вы действительно думаете, что идея использования конструктора удобства была такой оригинальной вашей концепцией, что вы отвечаете на вопросы, которые не приписывают вам это? Даунвотирование хороших ответов, потому что вы обеспокоены тем, что они могут принимать голоса от вас, более трусливы, чем включение хорошей идеи в ваш ответ. Я не собираюсь понижать вас, потому что ваш ответ также верен, но, пожалуйста, старайтесь не быть настолько агрессивным по отношению к другим пользователям. Дело в том, чтобы помочь человеку с вопросом, а не «бить» других пользователей. – Chuck