Есть много вопросов с одинаковым названием, но почему-то я чувствовал, что каждый случай индивидуален, поскольку моя проблема до сих пор не решена, и я понятия не имею, почему, а также для Swift недостаточно решений. Итак, вот мой сценарий:
Я использовал CarbonKit, чтобы отобразить 4 контроллера представления в одном контроллере представления. FourthViewController
отправляет вызов get, используя AlamoFire. Он успешно загружает данные и перезагружает tableView
. Однако, когда я перетаскиваю это табличное представление, мое приложение падает, и я получаю EXC_BREAKPOINT
, а иногда и EXC_BAD_ACCESS
за одно и то же.
Вот что я пробовал:
- При поиске я узнал о зомби. Поэтому я включил его, и когда приложение дает мне EXC, я получаю это:
-[CALayer removeAllAnimations]: сообщение отправляется освобожденному экземпляру
Итак, когда я проверил, не было никакой анимации, которую я мог бы использовать в этом классе. Но, учитывая, что это внутри CarbonKit, они могут иметь к этому какое-то отношение, но я не могу понять это.
- Я запускаю Product > Analyze из xCode, и большинство синих значков находятся на FBSDK, которые не имеют ничего общего с этим классом, поэтому отладка вообще бесполезна.
Вот скриншоты: и и вот что мне дало сообщение о зомби из Instruments 9.0: и < /а>
Я получаю это в консоли xCode: Если вам нужна дополнительная информация, я обновлю свои вопросы.
ОБНОВЛЕНИЕ
Вот мой код, когда я получаю данные из Интернета с помощью Alamofire. Теперь этот вызов выполняется успешно, и я могу прокрутить вниз, чтобы просмотреть все данные, загруженные в таблицу. Но когда я прокручиваю вверх, он вылетает с вышеуказанными ошибками.
let headers = [
"security-token": "MY_SECURITY_CODE_HERE",
"Content-Type": "application/x-www-form-urlencoded"
]
let url = "URL_GOES_HERE"
//print(url)
Alamofire.request(url, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON { response in
if let result = response.result.value as? [String: AnyObject] {
switch response.result {
case .success:
if result["status"] as! Int == 0
{
self.clearAllNotice()
let alert = UIAlertController(title: "Error",
message: "\(result["msg"] ?? "Our Server is not responding at the moment. Try again later!" as AnyObject)",
preferredStyle: UIAlertControllerStyle.alert)
let cancelAction = UIAlertAction(title: "OK",
style: .cancel, handler: nil)
alert.addAction(cancelAction)
self.present(alert, animated: true)
}
else
{
self.clearAllNotice()
for docReviewDict in (result["data"] as! [AnyObject]) {
let docReview = DoctorReview(dict: docReviewDict as! [String : AnyObject])
self.mainDoctorReviewsArray.append(docReview)
}
self.tableView.reloadData()
}
case .failure(let error):
self.clearAllNotice()
let alert = UIAlertController(title: "Something is wrong",
message: error.localizedDescription,
preferredStyle: UIAlertControllerStyle.alert)
let cancelAction = UIAlertAction(title: "OK",
style: .cancel, handler: nil)
alert.addAction(cancelAction)
self.present(alert, animated: true)
}
} else {
print("Somethins is wrong with the URL")
}
}
На всякий случай вот ячейка, которая загружается в табличном представлении.
Последние:
На основе комментария я сделал это:
DispatchQueue.main.async {
self.tableView.reloadData()
}
но все тот же результат, который я получаю
Тема 1: EXC_BAD_ACCESS (код = 1, адрес = 0xb4c4beb8)
в строке let cell = tableView.dequeueReusableCell(withIdentifier: "ReviewCell") as! ReviewsTableViewCell
, когда я перетаскиваю таблицу.
РЕАЛИЗАЦИЯ КЛЕТКИ
Имя класса ReviewsViewController
, которое имеет @IBOutlet fileprivate var tableView: UITableView!
.
Затем в viewDidLoad()
:
tableView.delegate = self
tableView.dataSource = self
tableView.tableFooterView = UIView()
Затем у меня есть делегат табличного представления и источник данных:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return mainDoctorReviewsArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ReviewCell") as! ReviewsTableViewCell //WHEN THE APP IS CRASHED AS I DRAG THE TABLE VIEW IT CRASH ON THIS LINE. As this line is highlighted in red with message "Thread 1: EXC_BREAKPOINT (code=1, subcode=0x186ddd61c)"
cell.userPhoto.layer.cornerRadius = cell.userPhoto.frame.width / 2;
cell.userPhoto.layer.masksToBounds = true
cell.userName.text = mainDoctorReviewsArray[indexPath.row].name
cell.starRating.settings.fillMode = .precise
if let rate = mainDoctorReviewsArray[indexPath.row].rating
{
cell.starRating.rating = Double(rate)!
}
else {
cell.starRating.rating = 0
}
cell.desc.text = mainDoctorReviewsArray[indexPath.row].feedback
cell.dateOfReview.text = mainDoctorReviewsArray[indexPath.row].dates
cell.timeOfReview.text = mainDoctorReviewsArray[indexPath.row].times
return cell
}
а в классе ячеек есть только:
import UIKit
import Cosmos
class ReviewsTableViewCell: UITableViewCell {
@IBOutlet var timeOfReview: UILabel!
@IBOutlet var dateOfReview: UILabel!
@IBOutlet var desc: UITextView!
@IBOutlet var starRating: CosmosView!
@IBOutlet var userName: UILabel!
@IBOutlet var userPhoto: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
Скриншот tableView
выше в этом вопросе.
Это родительский класс, в котором загружаются 4 ViewController: dropbox.com/s/ d5sh4ej1ssv6873/… И это класс, который имеет табличное представление, и при прокрутке он разбил приложение: dropbox.com/s/3kiju9hn3uewzar/ReviewsViewController.swift?dl=0
assign
, я получаю это во многих модулях, которые я установил. - person Chaudhry Talha   schedule 11.10.2017malloc_history
отладку, наиболее вероятной причиной должно бытьassign
илиremoveFromSuperlayer
неправильное использование. - person Cytus Chang   schedule 31.10.2017DispatchQueue.main.async
, я получаю ту же ошибкуEXC_BAD_ACCESS
. Вы можете увидеть больше в последнем разделе вопроса. - person Chaudhry Talha   schedule 15.11.2017IMPLEMENTATION OF CELL
. - person Chaudhry Talha   schedule 16.11.2017ReviewsTableViewCell
имеет тот же идентификатор, что иReviewCell
? В вашей раскадровке. - person bestiosdeveloper   schedule 16.11.2017ReviewCell
в коде и в инспекторе атрибутов. Сбой произошел только тогда, когда я начал прокручивать таблицу. - person Chaudhry Talha   schedule 16.11.2017