Advertisement
Guest User

autoreleased with no pool in place - just leaking

a guest
Jul 4th, 2012
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3. -(IBAction)measureAngle:(id)sender {
  4.     test = test+1;        // updates test
  5.                           // we check for remainder of test odd or even, this alternates between
  6.                           // the moving angle reading and the static angle reading
  7.     j = j + 0.5;          // update by 0.5, as it takes 2 button clicks to call display label
  8.                           // this is used as the amount to divide by for the average
  9.    
  10.     [self displayLabel];
  11. }
  12.  
  13. -(void) displayLabel {
  14.      
  15.     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  16.     buttonImage1 = [UIImage imageNamed:@"aoe_btn_start_off.png"];
  17.     buttonImage2 = [UIImage imageNamed:@"aoe_btn_stop_off.png"];
  18.  
  19.     [self.view addSubview:startButton];
  20.    
  21.     self.motionManager = [[[CMMotionManager alloc] init] autorelease];
  22.     NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
  23.    
  24.     if ((test%2) == 1) {    // triggered when it is equal to 0
  25.                         // so after the first call ( 1 + (-1)) = 0
  26.                         // then
  27.        
  28.         [startButton setImage:buttonImage2 forState:UIControlStateNormal];
  29.        
  30.         motionManager.accelerometerUpdateInterval = 1.0/10.0;
  31.         [motionManager startAccelerometerUpdatesToQueue:queue withHandler:
  32.          ^(CMAccelerometerData *accelerometerData, NSError *error){
  33.              
  34.              if (error) {
  35.                  [motionManager stopAccelerometerUpdates];
  36.                  labelText = [NSString stringWithFormat:
  37.                               @"Accelerometer encountered error: %@", error];
  38.              }
  39.              
  40.              else {
  41.                  
  42.                  
  43.                  labelText = [NSString stringWithFormat:
  44.                               @"%.0f",
  45.                               fabs((accelerometerData.acceleration.y)*90)];
  46.                  result = fabs((accelerometerData.acceleration.y)*90);
  47.              }
  48.              
  49.              
  50.              [accelerometerLabel performSelectorOnMainThread:@selector(setText:)
  51.                                                   withObject:labelText
  52.                                                waitUntilDone:YES];
  53.              
  54.          }];
  55.         [pool drain];
  56.        
  57.     }
  58.     else {
  59.         accelerometerLabel.text = @"This device has no accelerometer.";
  60.     }
  61.     if ( test > 20) {
  62.         [self resetMethod];
  63.     }
  64.    
  65.     if ((test%2) == 0){
  66.         [startButton setImage:buttonImage1 forState:UIControlStateNormal];
  67.        
  68.         accelerometerLabel.text = [NSString  stringWithFormat:@"%.f", result];
  69.                
  70.         switch (test)
  71.         {
  72.             case 2:
  73.                angle1.text = [NSString  stringWithFormat:@"%.0f", result];
  74.                 a1 = result;
  75.                 break;
  76.             case 4:
  77.                 angle2.text = [NSString  stringWithFormat:@"%.0f", result];
  78.                 a2 = result;
  79.                 break;
  80.             case 6:
  81.                 angle3.text = [NSString  stringWithFormat:@"%.0f", result];
  82.                 a3 = result;
  83.                 break;
  84.             case 8:
  85.                 angle4.text = [NSString  stringWithFormat:@"%.0f", result];
  86.                 a4 = result;
  87.                 break;
  88.             case 10:
  89.                 angle5.text = [NSString  stringWithFormat:@"%.0f", result];
  90.                 a5 = result;
  91.                 break;
  92.             case 12:
  93.                 angle6.text = [NSString  stringWithFormat:@"%.0f", result];
  94.                 a6 = result;
  95.                 break;
  96.             case 14:
  97.                 angle7.text = [NSString  stringWithFormat:@"%.0f", result];
  98.                 a7 = result;
  99.                 break;
  100.             case 16:
  101.                 angle8.text = [NSString  stringWithFormat:@"%.0f", result];
  102.                 a8 = result;
  103.                 break;
  104.             case 18:
  105.                 angle9.text = [NSString  stringWithFormat:@"%.0f", result];
  106.                 a9 = result;
  107.                 break;
  108.             case 20:
  109.                 angle10.text = [NSString  stringWithFormat:@"%.0f", result];
  110.                 a10 = result;
  111.                 break;
  112.             default:
  113.                 average = 0;
  114.                 break;
  115.        
  116.         }
  117.        
  118.         average = (a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10)/j; // calculates average
  119.                                                                         // j is the running total
  120.        
  121.        
  122.         if(isnan(average)) {
  123.             averageAngle.text = [NSString  stringWithFormat:@""];
  124.         }
  125.         else {
  126.             averageAngle.text = [NSString  stringWithFormat:@"%.1f\u00B0", average ];
  127.         }
  128.        
  129.    
  130.        
  131.     }
  132.    
  133.    
  134.    
  135.      
  136. }
  137.  
  138. -(IBAction)resetAll:(id)sender {
  139.    
  140.     [self resetMethod];
  141.     [self displayLabel];
  142.  
  143. }
  144.  
  145. -(void) resetMethod {
  146.    
  147.     averageAngle.text = [NSString  stringWithFormat:@""];
  148.    
  149.     test = 0;
  150.     average = 0;
  151.     result =0;
  152.     j =0;
  153.    
  154.     a1 = 0;
  155.     a2 = 0;
  156.     a3 = 0;
  157.     a4 = 0;
  158.     a5 = 0;
  159.     a6 = 0;
  160.     a7 = 0;
  161.     a8 = 0;
  162.     a9 = 0;
  163.     a10= 0;
  164.    
  165.     accelerometerLabel.text = [NSString  stringWithFormat:@""];
  166.     angle1.text = [NSString  stringWithFormat:@""];
  167.     angle2.text = [NSString  stringWithFormat:@""];
  168.     angle3.text = [NSString  stringWithFormat:@""];
  169.     angle4.text = [NSString  stringWithFormat:@""];
  170.     angle5.text = [NSString  stringWithFormat:@""];
  171.     angle6.text = [NSString  stringWithFormat:@""];
  172.     angle7.text = [NSString  stringWithFormat:@""];
  173.     angle8.text = [NSString  stringWithFormat:@""];
  174.     angle9.text = [NSString  stringWithFormat:@""];
  175.     angle10.text = [NSString  stringWithFormat:@""];
  176.    
  177. }
  178.  
  179. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
  180. - (void)viewDidLoad {
  181.     self.title = @"Angle of Elevation";
  182.     [super viewDidLoad];
  183.     [self resetMethod];
  184.     }
  185.  
  186.  
  187. - (void)didReceiveMemoryWarning {
  188.     // Releases the view if it doesn't have a superview.
  189.     [super didReceiveMemoryWarning];
  190.    
  191.     // Release any cached data, images, etc that aren't in use.
  192. }
  193.  
  194. - (void)viewDidUnload {
  195.     // Release any retained subviews of the main view.
  196.     // e.g. self.myOutlet = nil;
  197.     self.motionManager = nil;
  198.     self.accelerometerLabel = nil;
  199.     self.gyroscopeLabel = nil;
  200.     self.angle1 =nil;
  201.     self.angle2 =nil;
  202.     self.angle3 =nil;
  203.     self.angle4 =nil;
  204.     self.angle5 =nil;
  205.     self.angle6 =nil;
  206.     self.angle7 =nil;
  207.     self.angle8 =nil;
  208.     self.angle9 =nil;
  209.     self.angle10 =nil;
  210.     self.averageAngle=nil;
  211.     [super viewDidUnload];
  212. }
  213.  
  214. - (void)dealloc {
  215.     [motionManager release];
  216.     [accelerometerLabel release];
  217.     [gyroscopeLabel release];
  218.     [startButton release];
  219.     [angle1 release];
  220.     [angle2 release];
  221.     [angle3 release];
  222.     [angle4 release];
  223.     [angle5 release];
  224.     [angle6 release];
  225.     [angle7 release];
  226.     [angle8 release];
  227.     [angle9 release];
  228.     [angle10 release];
  229.     [averageAngle release];
  230.     [buttonImage1 release];
  231.     [buttonImage2 release];
  232.    
  233.     [super dealloc];
  234. }
  235.  
  236. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement