2013-03-30 13 views
1

앱을 만들었지 만 ipad 1에서는 끝 부분이 충돌합니다. ipad-higher에서는 계속 작동하지만 여전히 잘못된 일을하고 있다고 생각합니다. 더 경제적으로 뭔가를 만들어야합니다. 그러나 그것은 무엇입니까?ipad 1 크래시 - 내 앱이 어딘가에 있습니다.

결국 모든 일이 발생합니다. 그 전에 여러 개의 스크린이 서로 그리고 시뮬레이터에 놓이게됩니다. 다시 돌아 가면 모두 사라집니다. 하지만 ipad 1에서는 끝 부분까지 도달하지 않습니다. 나는 무슨 일이 일어나고 있는지에 대해 몇 가지 생각을하려고 노력할 것이다.

화면에서 스 와이프하면 망막 이미지 (큰 이미지)가 선택 될 수있는 4 개의 모서리와 각각 다른 이미지 배경으로 바뀝니다. 6 가지 장면이 있으므로 일반 0 상황의 경우 6x4 + 6x1, 큰 망막 이미지의 경우 25 가지가 있습니다. 서로 꼭대기에 5 개의 프레임 (4 개의 모서리와 1 개의 배경)이 있습니다 만, 비활성 물건을 nil로 설정하고 imageNamed를 사용하여 활성 이미지를로드합니다. 그것은 시뮬레이터에서는 잘되지만 ipad 1에서는 충돌이 발생하지 않습니다. 메모리 부족이나 경고가 없습니다.

나는 a) 자동 풀 풀 b) imageNamed를 imageContentsOfFile로 대체했다. autorelease 풀은 효과가 없습니다. imageNamed, imageContentsOfFile이 작동하지 못해서 작업을 건너 뛰었습니다.

너무 과도하게 잘못되었거나 어떤 생각이 더 경제적으로 적용될 수 있는지에 대한 아이디어는 결국 어딘가에 너무 많은 것을 요구합니다. 있는 UIImage imageWithContentsOfFile를 사용

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
CGPoint tappedPt = [[touches anyObject] locationInView:self.view]; 

NSArray *subviews = [[NSArray alloc]init]; 

subviews = [self.view subviews]; 

// Return if there are no subviews 
if ([subviews count] == 0) return; 

for (UIView *subview in subviews) { 
    if ([subview pointInside:[self.view convertPoint:tappedPt toView:subview] withEvent:event]){ 

     [self checkAndChange:subview]; 

     [self modifyChoice:subview]; 
    } 
} 
} 


- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
// Get the subviews of the view 

CGPoint tappedPt = [[touches anyObject] locationInView:self.view]; 

NSArray *subviews = [[NSArray alloc]init]; 

subviews = [self.view subviews]; 

// Return if there are no subviews 
if ([subviews count] == 0) return; 

for (UIView *subview in subviews) { 

    if ([subview pointInside:[self.view convertPoint:tappedPt toView:subview] withEvent:event]){ 

     [self checkAndChange:subview]; 

     [self modifyChoice:subview]; 

    } 

} 

} 

-(void) modifyChoice:(UIView *)subview 
{ 
if(subview==area1LinksBoven){[gekozenExpressieBijDimensie replaceObjectAtIndex:dimensie-1 withObject:[NSNumber numberWithInteger:1]];} 
if(subview==area2RechtsBoven){[gekozenExpressieBijDimensie replaceObjectAtIndex:dimensie-1 withObject:[NSNumber numberWithInteger:2]];} 
if(subview==area3RechtsOnder){[gekozenExpressieBijDimensie replaceObjectAtIndex:dimensie-1 withObject:[NSNumber numberWithInteger:3]];} 
if(subview==area4LinksOnder){[gekozenExpressieBijDimensie replaceObjectAtIndex:dimensie-1 withObject:[NSNumber numberWithInteger:4]];} 

if(maxChoice<dimensie){maxChoice=dimensie; 
    if(maxChoice==1){headerGevuld.image = [UIImage imageNamed:@"TOP1.png"];} 
    if(maxChoice==2){headerGevuld.image = [UIImage imageNamed:@"TOP2.png"];} 
    if(maxChoice==3){headerGevuld.image = [UIImage imageNamed:@"TOP3.png"];} 
    if(maxChoice==4){headerGevuld.image = [UIImage imageNamed:@"TOP4.png"];} 
    if(maxChoice==5){headerGevuld.image = [UIImage imageNamed:@"TOP5.png"];} 
    if(maxChoice==6){headerGevuld.image = [UIImage imageNamed:@"TOP6.png"];} 
} 
} 

-(void) checkAndChange:(UIView *)subview{ 

if(subview==area1LinksBoven){ 
    area1LinksBoven.image = [UIImage imageNamed:@"SELECTION1.png"]; 
    area2RechtsBoven.image = nil; 
    area3RechtsOnder.image = nil; 
    area4LinksOnder.image = nil; 
    footer.image = [UIImage imageNamed:@"FOOT1.png"]; 
    @autoreleasepool { 
    if(dimensie==1){ 
     filmAchtergrond0.image = [UIImage imageNamed:@"1PassiefActiefOntspanning.jpg"];} 
    if(dimensie==2){ 
     filmAchtergrond0.image = [UIImage imageNamed:@"1MakkelijkMoeilijkMaster.jpg"];} 
    if(dimensie==3){ 
     filmAchtergrond0.image = [UIImage imageNamed:@"1VeiligGevaarlijkGeborgenheid.jpg"];} 
    if(dimensie==4){filmAchtergrond0.image = [UIImage imageNamed:@"1NormaalBijzonderGeaard.jpg"];} 
    if(dimensie==5){filmAchtergrond0.image = [UIImage imageNamed:@"1AlleenSamenUniek.jpg"];} 
    if(dimensie==6){filmAchtergrond0.image = [UIImage imageNamed:@"1OrdeChaosDuidelijk.jpg"];} 
    } 
    [arrowRight setImage:[UIImage imageNamed:@"ARROW_RIGHT_ACTIVE.png"] forState:UIControlStateNormal]; 
} 
if(subview==area2RechtsBoven){ 
    area1LinksBoven.image = nil; 
    area2RechtsBoven.image = [UIImage imageNamed:@"SELECTION2.png"]; 
    area3RechtsOnder.image = nil; 
    area4LinksOnder.image = nil; 
    footer.image = [UIImage imageNamed:@"FOOT2.png"]; 
    @autoreleasepool {   
    if(dimensie==1){filmAchtergrond0.image = [UIImage imageNamed:@"2PassiefActiefEnergiek.jpg"];} 
    if(dimensie==2){ 
     filmAchtergrond0.image = [UIImage imageNamed:@"2MakkelijkMoeilijkUitdagend.jpg"];} 
    if(dimensie==3){ 
     filmAchtergrond0.image = [UIImage imageNamed:@"2VeiligGevaarlijkSpannend.jpg"];} 
    if(dimensie==4){filmAchtergrond0.image = [UIImage imageNamed:@"2NormaalBijzonderWow.jpg"];} 
    if(dimensie==5){filmAchtergrond0.image = [UIImage imageNamed:@"2AlleenSamenGezellig.jpg"];} 
    if(dimensie==6){filmAchtergrond0.image = [UIImage imageNamed:@"2OrdeChaosImproviseren.jpg"];} 
    } 
    [arrowRight setImage:[UIImage imageNamed:@"ARROW_RIGHT_ACTIVE.png"] forState:UIControlStateNormal]; 
} 
if(subview==area3RechtsOnder){ 
    area1LinksBoven.image = nil; 
    area2RechtsBoven.image = nil; 
    area3RechtsOnder.image = [UIImage imageNamed:@"SELECTION3.png"]; 
    area4LinksOnder.image = nil; 
    footer.image = [UIImage imageNamed:@"FOOT3.png"]; 
    @autoreleasepool { 
    if(dimensie==1){ 
     filmAchtergrond0.image = [UIImage imageNamed:@"3PassiefActiefUitputting.jpg"];} 
    if(dimensie==2){ 
     filmAchtergrond0.image = [UIImage imageNamed:@"3MakkelijkMoeilijkFrustrerend.jpg"];} 
    if(dimensie==3){ 
     filmAchtergrond0.image = [UIImage imageNamed:@"3VeiligGevaarlijkGevaarlijk.jpg"];} 
    if(dimensie==4){ 
     filmAchtergrond0.image = [UIImage imageNamed:@"3NormaalBijzonderOnbegrijjpelijk.jpg"];} 
    if(dimensie==5){filmAchtergrond0.image = [UIImage imageNamed:@"3AlleenSamenGroepsdruk.jpg"];} 
    if(dimensie==6){filmAchtergrond0.image = [UIImage imageNamed:@"3OrdeChaosRommeltje.jpg"];} 
    } 
    [arrowRight setImage:[UIImage imageNamed:@"ARROW_RIGHT_ACTIVE.png"] forState:UIControlStateNormal]; 
} 
if(subview==area4LinksOnder){ 
    area1LinksBoven.image = nil; 
    area2RechtsBoven.image = nil; 
    area3RechtsOnder.image = nil; 
    area4LinksOnder.image = [UIImage imageNamed:@"SELECTION4.png"]; 
    footer.image = [UIImage imageNamed:@"FOOT4.png"]; 
    @autoreleasepool { 
    if(dimensie==1){filmAchtergrond0.image = [UIImage imageNamed:@"4PassiefActiefApathie.jpg"];} 
    if(dimensie==2){filmAchtergrond0.image = [UIImage imageNamed:@"4MakkelijkMoeilijkSaai.jpg"];} 
    if(dimensie==3){ 
     filmAchtergrond0.image = [UIImage imageNamed:@"4VeiligGevaarlijkBeklemmend.jpg"];} 
    if(dimensie==4){filmAchtergrond0.image = [UIImage imageNamed:@"4NormaalBijzonderSleur.jpg"];} 
    if(dimensie==5){filmAchtergrond0.image = [UIImage imageNamed:@"4AlleenSamenEenzaam.jpg"];} 
    if(dimensie==6){filmAchtergrond0.image = [UIImage imageNamed:@"4OrdeChaosRigide.jpg"];} 
    } 
    [arrowRight setImage:[UIImage imageNamed:@"ARROW_RIGHT_ACTIVE.png"] forState:UIControlStateNormal]; 
} 

if(dimensie==1){headerPositie.image = [UIImage imageNamed:@"OUT1.png"];} 
if(dimensie==2){headerPositie.image = [UIImage imageNamed:@"OUT2.png"];} 
if(dimensie==3){headerPositie.image = [UIImage imageNamed:@"OUT3.png"];} 
if(dimensie==4){headerPositie.image = [UIImage imageNamed:@"OUT4.png"];} 
if(dimensie==5){headerPositie.image = [UIImage imageNamed:@"OUT5.png"];} 
if(dimensie==6){headerPositie.image = [UIImage imageNamed:@"OUT6.png"];} 
} 
+0

당신은 코드와 오류 메시지를 표시해야합니다 :

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"fileName" ofType:@"fileExtension"]; UIImage *img = [UIImage imageWithContentsOfFile:filePath]; 

여기 imageNamedimageWithContentsOfFile의 차이를 참조하십시오. iPad 1은 iPad 2의 절반의 RAM을 가지고 있으며 너무 느려서 느껴집니다. 당신은 그것에 대한지지를 떨어 뜨리는 것을 고려할 것입니다. – woz

+1

Xcode와 연결된 iPad 1로 앱을 실행하고 예외 중단 점을 설정해야합니다. 이렇게하면 충돌하는 이유를 파악하는 데 도움이됩니다. –

+2

woz, 나는 6.1을 목표로하고 ipad 1이 아니다. 그러나 나 자신이 하나 있고 앱을 테스트하기 위해, 나는 그것을해야만한다. 그렇기 때문에, 나는 그것이 ipad에서 건전함의 증거로 일하도록하는 것을 선호합니다. 사실 쉽게 사용할 수있을지라도 더 많은 RAM에 의지하고 싶지 않습니다. 사실 내 디자인이 충분히 차분하지 않고 더 혁신적이거나 경제적으로 고정 될 수 있습니다. 이것은 기술 문화가 더 많은 RAM에 기대어 있지만 대개 덜하는 문화와 결국 코딩을 개선하는 방법을 배울수록 효과적이라는 것을 증명할 수 있기 때문에 높아지고 있습니다. 미국 대 80 년대 러시아? – Pip

답변