Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 17th, 2012  |  syntax: None  |  size: 4.28 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. long delay when calling cocoa method
  2. - (void)captureViewImage {
  3.  
  4.     NSLog(@"captureViewImage called!");
  5.  
  6. // long delay happens here!
  7.  
  8.     fileNamer.title = @"Preparing to save...";
  9.  
  10.     // get user's file name
  11.     NSString *fileName = fileNamer.fileNameField.text;
  12.  
  13.     // dismiss keyboard
  14.     [fileNamer.fileNameField resignFirstResponder];
  15.  
  16.     // dismiss modal view
  17.     [self dismissFileNamingFormSheet];
  18.  
  19.     CGRect oldFrame = mainScrollView.frame;
  20.  
  21.     // capture off-screen content
  22.     mainScrollView.frame = CGRectMake(0, 0, 1024, 1432);
  23.  
  24.     // make screenshot
  25.     UIGraphicsBeginImageContext(mainScrollView.bounds.size);
  26.     [mainScrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
  27.     UIImage *screenImg = UIGraphicsGetImageFromCurrentImageContext();
  28.     UIGraphicsEndImageContext();
  29.  
  30.     // save screenshot in docs dir
  31.     NSData *pngData = UIImagePNGRepresentation(screenImg);
  32.     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  33.     NSString *documentsDir = [paths objectAtIndex:0];
  34.     [pngData writeToFile:[documentsDir stringByAppendingPathComponent:fileName]
  35.                  options:NSDataWritingAtomic error:nil];
  36.  
  37.     // revert scroll view
  38.     mainScrollView.frame = oldFrame;
  39.  
  40. }
  41.        
  42. @implementation FileNamingViewController
  43.  
  44. @synthesize fileNameField, newFileName;
  45.  
  46.  
  47. - (id)initWithNibName:(NSString *)nibNameOrNil
  48.                bundle:(NSBundle *)nibBundleOrNil parent:(TestDriveViewController *) myParent {
  49.  
  50.     if (self == [super initWithNibName:@"FileNamingViewController" bundle:nil]) {
  51.         UIBarButtonItem *rightButton = [[UIBarButtonItem alloc]
  52.                                         initWithTitle:@"Save"
  53.                                         style:UIBarButtonItemStyleDone
  54.                                         target:myParent
  55.                                         action:@selector(captureViewImage)];
  56.         self.navigationItem.rightBarButtonItem = rightButton;
  57.         [rightButton release];
  58.  
  59.         UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]
  60.                                         initWithTitle:@"Cancel"
  61.                                         style:UIBarButtonItemStyleBordered
  62.                                         target:myParent
  63.                                         action:@selector(dismissFileNamingFormSheet)];
  64.         self.navigationItem.leftBarButtonItem = leftButton;
  65.         [leftButton release];
  66.  
  67.         self.title = @"Save As?";
  68.     }
  69.     return self;
  70. }
  71.  
  72.  
  73. // UITextFieldDelegate
  74.  
  75. - (void)textFieldDidEndEditing:(UITextField *)textField {
  76.     [fileNameField resignFirstResponder];
  77. }
  78.  
  79.  
  80. - (void)viewDidLoad {
  81.     [fileNameField becomeFirstResponder];
  82.     [super viewDidLoad];
  83. }
  84.        
  85. - (void)presentFileNamingFormSheet {
  86.     fileNamer = [[FileNamingViewController alloc]
  87.                  initWithNibName:nil
  88.                  bundle:nil
  89.                  parent:self];
  90.  
  91.     fileNamingNavCtrl = [[UINavigationController alloc]
  92.                         initWithRootViewController:fileNamer];
  93.  
  94.     fileNamingNavCtrl.modalPresentationStyle = UIModalPresentationFormSheet;
  95.  
  96.     [self presentModalViewController:fileNamingNavCtrl
  97.                             animated:YES];
  98.  
  99.     // resize modal form sheet
  100.     fileNamingNavCtrl.view.superview.frame = CGRectMake(0, 0, 540, 115);
  101.  
  102.     // reposition modal form sheet
  103.     CGPoint position = CGPointMake(self.view.center.x, self.view.center.y - 50);
  104.     fileNamingNavCtrl.view.superview.center = position;
  105. }
  106.  
  107. - (void)dismissFileNamingFormSheet {
  108.     [fileNamer release];
  109.     [fileNamingNavCtrl release];
  110.     [self dismissModalViewControllerAnimated:YES];  
  111. }
  112.        
  113. Running (Self)      Symbol Name
  114. 1109.0ms   37.0%    argb32_image_mark_rgb32
  115. 328.0ms   10.9%     blkclr
  116. 171.0ms    5.7%     lo_alltraps
  117. 134.0ms    4.4%     pmap_enter
  118. 116.0ms    3.8%     png_write_find_filter
  119. 102.0ms    3.4%     pmap_remove_range
  120. 55.0ms    1.8%      pmap_get_mapwindow
  121. 47.0ms    1.5%      vm_page_lookup
  122. 47.0ms    1.5%      ml_set_interrupts_enabled
  123. 43.0ms    1.4%      vm_page_grab
  124. 38.0ms    1.2%      OSAddAtomic64
  125. 34.0ms    1.1%      hw_lock_to
  126. 31.0ms    1.0%      alphaProviderGetBytes
  127. 30.0ms    1.0%      hw_lock_unlock
  128. 26.0ms    0.8%      png_read_filter_row
  129. 25.0ms    0.8%      deflateInit_
  130. 23.0ms    0.7%      vm_map_lookup_entry
  131. 23.0ms    0.7%      adler32
  132. 22.0ms    0.7%      memory_object_recover_named