title: in app purchase in ios, EXC_BAD_ACCESS
body: <p>I want to implement In-App-Purchase in my ios app, i have UPGRADE button, when user click on upgrade, I am sending product request using  SKPayment SKProductsRequest, and added its delegate methods,
  the code is as shown below, whenever i click on upgrade button, after 2-3 seconds, it gives me error as 'executing bad access'. It giving error in sendRequest method only. Please give me the solution.</p>
  
  <pre><code>-(void)sendRequest
  {
      if ([SKPaymentQueue canMakePayments])
      {
  
          SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"thisIsMyProdID"]];
          request.delegate = self;
          [request start];
      }
  }
  -(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
  {
      for (SKPaymentTransaction *transaction in transactions)
      {
          switch (transaction.transactionState)
          {
  
              case SKPaymentTransactionStatePurchasing:
                  NSLog(@"Processing...");
                  break;
  
              case SKPaymentTransactionStatePurchased:
              {
                  [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                  //statusLabel.text = @"Done!";
                  UIAlertView *tmp = [[UIAlertView alloc]
                                      initWithTitle:@"Complete"
                                      message:@"You have unlocked Feature 2!"
                                      delegate:self
                                      cancelButtonTitle:nil
                                      otherButtonTitles:@"Ok", nil];
                  [tmp show];
  
  
              }
                                 break;
  
              case SKPaymentTransactionStateRestored:
              {
                  [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                  // remove wait view here
              }
                  break;
  
              case SKPaymentTransactionStateFailed:
              {
                  if (transaction.error.code != SKErrorPaymentCancelled) {
                      NSLog(@"Error payment cancelled");
                  }
                  [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                  // remove wait view here
  
              }
                  break;
  
              default:
                  break;
          }
      }
  }
  
  -(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
  {
      NSArray *products = response.products;
      if (products.count != 0)
      {
          product = products[0];
  
          SKPayment *payment = [SKPayment paymentWithProduct:product];
  
          [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
          [[SKPaymentQueue defaultQueue] addPayment:payment];
  
      }
      else
      {
          UIAlertView *tmp = [[UIAlertView alloc]
                              initWithTitle:@"Not Available"
                              message:@"No products to purchase"
                              delegate:self
                              cancelButtonTitle:nil
                              otherButtonTitles:@"Ok", nil];
          [tmp show];
      }
  }
  </code></pre>