Hi all,

I have modified my code to send asynchronous request using the below

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:
                                                                 [NSURLRequest 
requestWithURL:
                                                                  [NSURL 
URLWithString:strURL]] delegate:self];

- (void)connection:(NSURLConnection *)connection didReceiveData: (NSData *)data
{       
    [self.activeDownload appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    // Set appIcon and clear temporary data/image
                
UIImage *image = [[UIImage alloc] initWithData:self.activeDownload];
        
    if (image != nil)
    {
                self.appRecord.appIcon = image;
        }
    else
    {
self.appRecord.appIcon = [UIImage imageNamed:@"image_not_available.png"];
    }
    [image release];
        
    // Release the connection now that it's finished
    self.imageConnection = nil;
        
    // call our delegate and tell it that our icon is ready for display
    [delegate appImageDidLoad:self.indexPathInTableView];
        [delegate appSingleImageDidLoad:rowNumber];
        
        self.activeDownload = nil;
        
        // show in the status bar that network activity is starting
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

In simulator I am able to run the application without any crashes.

But in device it is taking long time to download the first image, and from second image the application is getting crashed.

I have seen crash reports ,  and it is  of type  "low memory".

Can any one suggest me  how to handle this situation?

Also, I have overridden "didReceiveMemoryWarning" and added an alertview, it is not getting called.

Thanks in advance.

Thanks,
Santhosh Kumar Gundu

On Aug 12, 2010, at 2:19 AM, David Duncan wrote:

On Aug 11, 2010, at 12:46 AM, SanthoshKumarGundu wrote:

Can any one have an idea of what is the maximum image limit(size and resolution) in iphone?.

There are some images in web server. In my application , I am getting these as NSData (one image at a time) and displaying the image using the following code

NSData *imageData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:imageURLString]];
UIImage *sampleImage = [UIImage imageWithData:imageData];

This is working fine for small images ( upto 1MB of size and resolution of 1024*1024).

But for large images ( 3MB size and resolution of 2500*2500), the application is getting crashed.


What kind of crash are you getting? I would bet that the exception code is 0x8badf00d (see TN2151 for information on what that means and how to read crash reports).

You are actually pretty lucky that the first version works at all, and I bet that if you are on a slow or broken network that it won't work and you will get a similar crash.

Generally any using -initWithContentsOfURL: for remote URLs will fail if you are trying to do so on the main thread (and if you are using UIKit, you are probably trying to do so on the main thread, like the above code).

The correct solution here is to use asynchronous networking to download the data and once you finish the download you can create a UIImage from the gathered data. Using synchronous networking (like you are above) is generally discouraged.
--
David Duncan



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to