Приложение для iPad останавливается во время сборки - PullRequest
1 голос
/ 21 августа 2011

Приложение представляет собой приложение галереи, которое создает изображение в папке «Документы» в файловой системе устройства iOS.Он хранит данные изображений в базе данных sqlite.

Я пытаюсь разместить приложение iPad на устройстве, но каждый раз во время процесса сборки приложение просто говорит "приостановлено" на панели "По теме"в Xcode 4 он перестает создавать приложение.

Однако, когда я собираю приложение для симулятора iPad, все прошло нормально.Я вижу окончательное приложение на симуляторе, и оно не вылетает.

Мое приложение считывает список URL-адресов из текстового файла, создает изображение из URL-адреса, а также миниатюрное представление этого изображения и сохраняетих в папку «Документы».Затем он сохраняет URL-адрес полноразмерного изображения в базе данных sqlite3.

Я прочитал и попытался отключить сжатие PNG, например, как это сделал этот парень:

iOS - Build FreezesКогда я выполняю сборку на устройстве, но не в симуляторе

, но это не помогло, он все равно останавливается во время сборки.

Я проверил свой текстовый файл и строку егоОстановка чтения имеет ту же структуру, что и другие строки.

Кто-нибудь сталкивался с этой проблемой?

Обновление

Запустил мое приложение через Инструменты, и, кажется, у меня есть CFString, котораяпродолжает накапливаться.

Я думаю, что это моя база данных и как я продолжаю вставлять в нее больше данных.

Ребята, вы видите что-то не так с этим кодом:

- (void) insertImageWithImageNumber:(int) imageNumber URL:(NSString *) url ImageDesciption:(NSString *) description andGalleryNumber:(int) galleryNumber
{
    NSString *imageName = [[NSString alloc] initWithString:[url lastPathComponent]];
    NSURL *imageURL = [[NSURL alloc] initWithString:url];
    NSData *imageData = [[NSData alloc] initWithContentsOfURL:imageURL];

    // writing the image file to the Documents folder of this app
    [[NSFileManager defaultManager] createFileAtPath:[MediaDirectory mediaPathForFileName:imageName] contents:imageData attributes:nil];

    NSString *imagePath = [[NSString alloc] initWithString:[MediaDirectory mediaPathForFileName:imageName]];

    //NSLog(@"Image stored in location: %@", imagePath);

    const char *sqlCommand = "INSERT INTO galleryImages (imageNumber, imageURL, imageDescription, galleryNumber) VALUES (?, ?, ?, ?);";

    sqlite3_stmt *statement;

    sqlite3_prepare_v2(database, sqlCommand, -1, &statement, nil);
    sqlite3_bind_int(statement, 1, imageNumber);
    sqlite3_bind_text(statement, 2, [imagePath UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(statement, 3, [description UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_int(statement, 4, galleryNumber);

    sqlite3_step(statement);
    sqlite3_finalize(statement);

    UIImage *thumbnailImage = [[UIImage alloc] initWithData:imageData];

    // creating thubmanil of the full size image and storing them
    UIGraphicsBeginImageContext(CGSizeMake(thumbnailImage.size.width / 4.0, thumbnailImage.size.height / 4.0));

    // redraw the image in a smaller size (resizing the image)
    [thumbnailImage drawInRect:CGRectMake(0, 0, thumbnailImage.size.width / 4.0, thumbnailImage.size.height / 4.0)];

    // making a new thumbnail image from current context
    UIImage *newThumbnailImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    // getting the binary data for the thumbnail image so we can write it to disk later
    NSData *thumbnailData = UIImagePNGRepresentation(newThumbnailImage);

    // write the thumbnail image to disk
    NSString *thumbnailName = [[NSString alloc] initWithFormat:@"%@_thumb.%@", [imageName stringByDeletingPathExtension], [imageName pathExtension]];

    //NSLog(@"Thumbnail path = %@", [MediaDirectory mediaPathForFileName:thumbnailName]);

    [thumbnailData writeToFile:[MediaDirectory mediaPathForFileName:thumbnailName] atomically:NO];

    [thumbnailImage release];
    [thumbnailName release];
    [imagePath release];
    [imageData release];
    [imageURL release];
    [imageName release];
}

Подробнее Обновление

Я решила переделать дизайн моей программы и создать миниатюрные изображения на лету после вставки всего моего изображения в базу данных.Поэтому после цикла, который вставляет данные изображения, у меня есть еще один цикл, который создает эскизы изображений и добавляет их в интерфейс.

Полагаю, переделка моего дизайна - это одно из решений:)

...