2012-10-03 2 views
1

내 iPhone 4에서 iOS 소프트웨어를 업데이트 한 이후로 개발중인 앱이 지연되기 시작했습니다. 이것은 UISearchField에 입력 값을 제공 할 때만 발생합니다.IOS6의 메모리 할당 차이점은 무엇입니까?

"지연"은 iOS 키보드에서 30 자 정도를 두드렸을 때 발생합니다. 그 후에는 연속적인 탭이 뒤처져 전화 자체가 더 이상 입력을 처리 할 수 ​​없다는 느낌을줍니다.

내 검색 필드에 세 개 이상의 문자를 입력 할 때마다 내 데이터베이스를 선택하는 UISearchDisplayController가 있습니다.

다음은 몇 가지 코드입니다.

실제 검색

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 


    if ([searchText length] >= 3) 
    { 


     if (searchObject != nil) 
     { 
      searchObject = nil; 
      searchObject = [[FritextSok alloc]init]; 
      [searchObject setDelegate:self]; 
     } 

     [searchObject setSearchstring:searchText]; 

     [searchObject search]; 



    } 
    else 
    { 

     // Displays non filtered results. 
    } 


} 

나는 또한 iOS6의 시뮬레이터를 실행하는 동안이 발생하고있다.

또한 iOS 키보드 "지연"을 제외하고. 서로 다른 뷰 컨트롤러에있는 모든 단일 UISegmentedControl은 그리는 데 오래 걸리는 것처럼 보입니다. 이것은 키보드 매시 이후에 발생합니다.

4.3에서 5.1까지의 모든 iOS 버전에서 완벽하게 실행되는 것처럼 보이기 때문에 제대로 셀을 재사용하고 있습니다.

다른 방법으로 searchObject를 할당 해 보았습니다. 아무것도 도움이되는 것 같지 않습니다.

편집

이 프로파일 러 툴의 사용으로 좀 더 시행 착오 후 sporadicly

purgeIdleCellConnections: found one to purge conn = <Memory address> 

편집 2

을 표시하는 오류 메시지입니다. 나는이 블록 때문에 살아있는 기억이 끊임없이 증가하고 있음을 발견했다.

UISegmentedControl *segment = [[UISegmentedControl alloc] init]; 
segment.frame = CGRectMake(0, 0, 70, 32); 
segment.selectedSegmentIndex = -1; 
segment.segmentedControlStyle = UISegmentedControlStyleBar; 
segment.tintColor = [UIColor colorWithRed:0.745 green:0.184 blue:0.216 alpha:1]; 
segment.momentary = YES; 
segment.alpha = 0.9; 
[segment insertSegmentWithTitle:@"Ta bort" atIndex:0 animated:NO]; 
[segment addTarget:self action:@selector(foo:) forControlEvents:UIControlEventValueChanged]; 

위 블록은 UISearchField에 문자를 입력 할 때마다 실행됩니다. UISearchDisplayDelegate가 -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 함수에 대해 YES를 리턴하므로. UITableView와 그것의 셀을 다시 드로잉하는 결과.

문제는 이제 다소 쉽게 처리 할 수있게되었습니다. 현재 가능한 해결책을 찾고 있습니다.

답변

0

솔루션 :

이동 코드의 tableview의 실제 재 도면의

UISegmentedControl *segment = [[UISegmentedControl alloc] init]; 
segment.frame = CGRectMake(0, 0, 70, 32); 
segment.selectedSegmentIndex = -1; 
segment.segmentedControlStyle = UISegmentedControlStyleBar; 
segment.tintColor = [UIColor colorWithRed:0.745 green:0.184 blue:0.216 alpha:1]; 
segment.momentary = YES; 
segment.alpha = 0.9; 
[segment insertSegmentWithTitle:@"Ta bort" atIndex:0 animated:NO]; 
[segment addTarget:self action:@selector(foo:) forControlEvents:UIControlEventValueChanged]; 

외부.