2015-06-08 4 views
0

Хотя перезагрузка tableView сбоев приложения, и я получаю ошибку таНоса:получает сообщение об ошибке, как из malloc_error_break

ошибки для объекта 0x7f8c7b99be80: указатель освобождение не было выделен установить контрольную точку в malloc_error_break для отладки

Я поставил Символическую точку останова для malloc_error_break

Также попытайтесь найти память утечки с помощью «Инструменты», но он просто показывает ту же ошибку в консоли, но здесь нет утечки памяти. Как решить эту проблему.

(я использую 8.3 SDK и Xcode 6.3.1)

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    var ResultCellIdentifier = "placementID" 
    var LoadCellIdentifier = "LoadingCell" 

    var count = self.arrayOfAllData.count as NSInteger 
    if count == 0 && indexPath.row == 0 { 
     let cell = tableView.dequeueReusableCellWithIdentifier("LoadingCell") as! UITableViewCell 
     return cell 
    } 
    else { 
     let cell = tableView.dequeueReusableCellWithIdentifier("placementID") as! PlacementsTableViewCell 

     indexPATH = indexPath 
     var tweet = self.arrayOfAllData.objectAtIndex(indexPath.row) as! NSDictionary 

     let created_at = tweet.valueForKey("created_at") as? NSString 
     var dateArray : NSArray = created_at!.componentsSeparatedByString(" ") 
     if dateArray.count != 0 { 
      let month = dateArray.objectAtIndex(1) as! String 
      let date = dateArray.objectAtIndex(2) as! String 

      cell.timeLabel.text = String(format: "%@ %@", date,month) 
     } 


     ///////////any url present in tweet text 
     var entities = NSDictionary() 
     entities = tweet.valueForKey("entities") as! NSDictionary 

     var urlsArray = entities.valueForKey("urls") as! NSArray 
     if urlsArray.count == 0 { 

     }else { 

      for item in urlsArray as! [NSDictionary] { 
       let expanded_url = item.valueForKey("expanded_url") as? String 
      } 
     } 
     /////////// 

     var tweet_id_str = NSString() 
     var user_id_str = NSString() 
     var data = NSData() 
     //   var name = NSString() 
     ///////////count of retweets 
     var retweet_count = tweet.valueForKey("retweet_count") as! NSInteger 

     var retweeted_status = tweet.valueForKey("retweeted_status") as! NSDictionary 
     var favorite_count = retweeted_status.valueForKey("favorite_count") as! NSInteger 
     ///////////tweet id 
     tweet_id_str = retweeted_status.valueForKey("id_str") as! NSString 

     if retweeted_status.isEqual(nil) { 

     } 
     else { 
      var user = retweeted_status.valueForKey("user") as! NSDictionary 
      ///////////last update 
      let created_at = retweeted_status.valueForKey("created_at") as! NSString 
      /////////// 

      ///////////user name who added this tweet 
      cell.titleLabel.text = user.valueForKey("name") as? String 
      ///////////user id who added this tweet 
      user_id_str = user.valueForKey("id_str") as! NSString 
      ///////////screen name 
      let screen_name = user.valueForKey("screen_name") as! NSString 

      var followers_count = user.valueForKey("followers_count") as! NSInteger 

      ///////////profile image of the tweet 

      cell.avatarImageView.image = UIImage(named: "Twitter Avatar.jpg") 

      let profile_image_url = user.valueForKey("profile_image_url") as! NSString 
      var imageUrl = NSURL(string: profile_image_url as String) 

      let request: NSURLRequest = NSURLRequest(URL: imageUrl!) 

      NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse!,data: NSData!,error: NSError!) -> Void in 
       if error == nil { 

        if data != nil { 
         var image = UIImage(data: data) 
         cell.avatarImageView.image = image 
        } 
       } 
      }) 


      if retweet_count >= 5 || favorite_count >= 15 || followers_count >= 30000 { 
       cell.featuredImageView.hidden = false 
       cell.featuredImageView.image = UIImage(named: "new feature star") 
      } 
      else { 
       cell.featuredImageView.hidden = true 
      } 

     } 

     cell.mailLabel.text = "" 

     let tweetText = tweet.valueForKey("text") as? NSString 
     cell.beattypeLabel.text = tweetText as? String 

     if tweetText?.containsString("@gmail") == true{ 
      NSLog("Mail id is present at index : %d", indexPath.row) 
      var words = NSArray() 
      words = NSArray(array: tweetText!.componentsSeparatedByString(" ")) 
      var mailAddress = NSString() 
      for var i = 0; i < words.count; i++ { 
       var mailAdd = words.objectAtIndex(i) as! NSString 

       if mailAdd.rangeOfString("@gmail").location != NSNotFound { 
        NSLog("mail Address : %@", mailAdd) 
        if mailAdd.rangeOfString(".com").location == NSNotFound { 
         var lastChar = mailAdd.characterAtIndex(mailAdd.length-1) 
         var lastCharStr:NSString = NSString(format: "%ch", lastChar) 

         mailAddress = mailAdd.stringByAppendingString(".com") 
        } 
       } 
      } 
     } 


     return cell 
    }   
} 

в то же время Thread 1 показывает этот http://i.stack.imgur.com/2YoQp.jpg (пожалуйста, пройти через этот образ)

+0

я думаю, ваша проблема описана [здесь] (http://stackoverflow.com/questions/22329005/mac-terminal-pointer-being-freed -was-not-alloc-error-when-opening-termin) –

+0

моя проблема связана с iOS-приложением, а не с Mac OS X ...... если она такая же для приложения iOS и Mac OS X app .... может вы подробно объясните мне. –

+0

Не могли бы вы показать свой код контроллера таблицы? – idmean

ответ

0

использование

var cell = tableView.dequeueReusableCellWithIdentifier("placementID") as! PlacementsTableViewCell 
if cell.isEqual(nil) { 
    cell = PlacementsTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "placementID") 
} 

вместо

let cell = tableView.dequeueReusableCellWithIdentifier("placementID") as! PlacementsTableViewCell 

и изменить загрузку изображения в другом потоке, как следовать

let qualityOfServiceClass = QOS_CLASS_BACKGROUND 
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0) 
dispatch_async(backgroundQueue, { 
    println("This is run on the background queue") 
    var imageData = NSData(contentsOfURL: imageUrl!) 
    var image = UIImage(data: imageData!) 
    dispatch_async(dispatch_get_main_queue(), {() -> Void in 
      println("This is run on the main queue, after the previous code in outer block") 
      cell.avatarImageView.image = image 
     }) 
}) 
Смежные вопросы