1

我制作了一个应用程序,但在 ipad 1 上它在最后部分崩溃。在 ipad-higher 上它仍然可以工作,但我仍然认为我做错了什么,我真的需要让一些东西更经济地工作。但它是什么?

在最后部分,这一切都发生了。在此之前,几个屏幕相互叠加,在模拟器中,当您返回时,它们都被关闭。但是在 ipad 1 上,你甚至不会到达结尾部分的末尾。我将尝试解释发生了什么以及我对正在发生的事情的几个想法。

您可以在屏幕上滑动,视网膜图像(大图像)与可以选择的四个角交换,每个角都有不同的图像背景。有六个不同的场景,所以有 6x4 + 6x1 for-normal-0-situation,25 个大视网膜图像。只有 5 个帧在彼此之上工作(4 个角和 1 个背景),但我将不活动的东西设置为 nil 并使用 imageNamed 加载活动图像。它在模拟器上运行良好,但在 ipad 1 上崩溃,没有低内存警告或类似情况。

我研究了改进:a) 自动释放池 b) imageNamed 被 imageContentsOfFile 取代。自动释放池没有任何作用。imageNamed,我无法让 imageContentsOfFile 工作,所以我跳过了该操作。

任何关于什么是错误的想法以及可以应用什么样的想法来使其更经济地工作的任何想法,因为它最终在某个地方要求太多了。

- (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"];}
}
4

1 回答 1

0

使用 UIImage imageWithContentsOfFile 加载图像:

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

imageNamed在这里查看和之间的区别:http imageWithContentsOfFile:
//developer.apple.com/library/ios/#documentation/uikit/reference/UIImage_Class/Reference/Reference.html

于 2013-03-30T21:28:36.197 回答