AdHocデプロイ時にクラッシュするアプリケーションが1つありますが、Xcodeを通じてインストールされた場合は正常に動作します。私は自分のデバイス(iOSの10)からクラッシュログをsymbolicatedきたし、それらはすべて同じです。AdHoc中にアプリケーションがクラッシュするが、デバッグ中ではない
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 UIKit 0x0000000196507a4c __66-[UISectionRowData refreshWithSection:tableView:tableViewRowData:]_block_invoke + 424
1 UIKit 0x00000001965079f0 __66-[UISectionRowData refreshWithSection:tableView:tableViewRowData:]_block_invoke + 332
2 UIKit 0x00000001964c7368 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 2712
3 UIKit 0x00000001964c67e4 -[UITableViewRowData rectForFooterInSection:heightCanBeGuessed:] + 536
4 UIKit 0x00000001964c6570 -[UITableViewRowData heightForTable] + 60
だから私の考えは、[OK]を、多分私は私のセクション数を見つけることだどのように問題がある、です。ここに私のクラスのコードはありますが、それはかなり簡単です。
class HeaderTableViewController: UITableViewController {
var nonDefaultTitle : String?
var data: [String: [String]] = [:]
var headers : [String] = []
var bodys : [[String]] = []
init(displayData: [String: [String]]) {
super.init(style: .Plain)
data = displayData
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
override func viewDidLoad() {
super.viewDidLoad()
for key in data.keys {
headers.append(key)
}
for arr in data.values {
bodys.append(arr)
}
tableView.registerNib(UINib(nibName: "DefaultCustomCell", bundle: nil), forCellReuseIdentifier: "DefaultCustomCell")
tableView.estimatedRowHeight = 50
tableView.rowHeight = UITableViewAutomaticDimension
tableView.sectionHeaderHeight = UITableViewAutomaticDimension;
tableView.estimatedSectionHeaderHeight = 100;
let nib = UINib(nibName: "HeaderTableHeaderView", bundle: nil)
tableView.registerNib(nib, forHeaderFooterViewReuseIdentifier: "HeaderTableHeaderView")
if let ttle = nonDefaultTitle {
self.title = ttle
}
else {
self.title = "Talking Tips"
}
}
}
//
// MARK: Helpers
//
extension HeaderTableViewController {
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return headers.count
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return bodys[section].count
}
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cell = self.tableView.dequeueReusableHeaderFooterViewWithIdentifier("HeaderTableHeaderView")
let header = cell as? HeaderTableHeaderView
header!.titleLabel.text = headers[section]
return cell
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("DefaultCustomCell", forIndexPath: indexPath) as! DefaultCustomCell
cell.titleLabel.text = bodys[indexPath.section][indexPath.row]
cell.selectionStyle = .None
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { }
}
//
// MARK: The table headers
//
class HeaderTableHeaderView: UITableViewHeaderFooterView {
@IBOutlet weak var titleLabel: UILabel!
}
私はそれがreallllyまっすぐ進むのです意味します。繰り返しますが、xcodeからインストールするとアプリはうまく動作します。私がインストールしても、アプリを殺してから、もう一度開くと、すべてうまく動作します。
私はAdHoc(Diawiを使用して)をインストールしようとするたびに、このクラスでは愚かなことがクラッシュします。
奇妙なこと:
とにかく、あなたは
viewDidLoad()
に設定する必要はありません、あなたがする必要があるすべては、これを持っているrectForFooterInSection、まだあなたはフッターを使って何をやっていません。おそらく、sectionFooterHeightを0に設定しようとしますか? – svarrall