<commit_before>//
//  SimpleTableViewDataSource.swift
//  BXUI
//
//  Created by <NAME> on 2/22/17.
//  Copyright © 2017 banxi1988. All rights reserved.
//

import Foundation

import UIKit


/// 基础公开 TableViewAdapter
/// Simple 在此 模块中,指的是针对 单一 Section 的意思.
/// 如果有多个 Section 的话,可以使用 ComposedTableViewAdapter 来组合使用
open class BaseSimpleTableViewAdapter<T>:BaseDataSource<T>,ComposableTableViewAdapter{
  open var cellClass: UITableViewCell.Type = UITableViewCell.self

  open var didSelectedItem: DidSelectedItemBlock?
  open var didDeselectedItem: DidDeselectedItemBlock?
  open var preConfigureCellBlock: ((UITableViewCell,IndexPath) -> Void)?

  /// 由于 Delegate 和 DataSource 可选协议众多,此包装不方便一一包装.
  /// 这个时候有需要的 可以通过 fallbackDelegate 和 fallbackDataSource
  /// 让需要的实现此类方法的在应用时实现,以免提供所需要实现接口
  /// 注意这是 fallback ,所以对于如 sectionHeader 之类的控制 
  /// 本包装类已经提供了,就不会再调用 fallbackDataSource 了.
  /// 暂时没有添加其实实现,需要的时候再加
  /// NOTE: 值得注意的是,在实际使用中,原来 didSelectRowAt 方法是在 BaseSimpleTableViewAdapter
  /// 中实现的,但是测试发现,如果在其子类实现的话,导致无法在 ComposedTableAdapter 中通过 ComposableTableViewAdapter 
  open var fallbackDelegate:UITableViewDelegate?
  open var fallbackDataSource:UITableViewDataSource?

  // MARK: Section Header Footer
  open var referenceSectionHeaderHeight:CGFloat = 15
  open var referenceSectionFooterHeight:CGFloat = 15
  open var sectionHeaderView:UIView?
  open var sectionFooterView:UIView?

  open fileprivate(set) weak var tableView:UITableView?

  open var sectionHeaderHeight:CGFloat{
    return sectionHeaderView == nil ? 0:referenceSectionHeaderHeight
  }

  open var sectionFooterHeight:CGFloat{
    return sectionFooterView == nil ? 0:referenceSectionFooterHeight
  }<commit_msg>fix arc 修正 fallBack delegate 及 datasource 没有声明为 weak 造成循环引用 的问题<commit_after>//
//  SimpleTableViewDataSource.swift
//  BXUI
//
//  Created by <NAME> on 2/22/17.
//  Copyright © 2017 banxi1988. All rights reserved.
//

import Foundation

import UIKit


/// 基础公开 TableViewAdapter
/// Simple 在此 模块中,指的是针对 单一 Section 的意思.
/// 如果有多个 Section 的话,可以使用 ComposedTableViewAdapter 来组合使用
open class BaseSimpleTableViewAdapter<T>:BaseDataSource<T>,ComposableTableViewAdapter{
  open var cellClass: UITableViewCell.Type = UITableViewCell.self

  open var didSelectedItem: DidSelectedItemBlock?
  open var didDeselectedItem: DidDeselectedItemBlock?
  open var preConfigureCellBlock: ((UITableViewCell,IndexPath) -> Void)?

  /// 由于 Delegate 和 DataSource 可选协议众多,此包装不方便一一包装.
  /// 这个时候有需要的 可以通过 fallbackDelegate 和 fallbackDataSource
  /// 让需要的实现此类方法的在应用时实现,以免提供所需要实现接口
  /// 注意这是 fallback ,所以对于如 sectionHeader 之类的控制 
  /// 本包装类已经提供了,就不会再调用 fallbackDataSource 了.
  /// 暂时没有添加其实实现,需要的时候再加
  /// NOTE: 值得注意的是,在实际使用中,原来 didSelectRowAt 方法是在 BaseSimpleTableViewAdapter
  /// 中实现的,但是测试发现,如果在其子类实现的话,导致无法在 ComposedTableAdapter 中通过 ComposableTableViewAdapter 
  open weak var fallbackDelegate:UITableViewDelegate?
  open weak var fallbackDataSource:UITableViewDataSource?

  // MARK: Section Header Footer
  open var referenceSectionHeaderHeight:CGFloat = 15
  open var referenceSectionFooterHeight:CGFloat = 15
  open var sectionHeaderView:UIView?
  open var sectionFooterView:UIView?

  open fileprivate(set) weak var tableView:UITableView?

  open var sectionHeaderHeight:CGFloat{
    return sectionHeaderView == nil ? 0:referenceSectionHeaderHeight
  }

  open var sectionFooterHeight:CGFloat{
    return sectionFooterView == nil ? 0:referenceSectionFooterHeight
  }
{'fraction_non_alphanumeric': 0.07701283547257877, 'fraction_numerical': 0.011085180863477246, 'mean_word_length': 4.8816466552315605, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3940053', 'n_tokens_mistral': 1365, 'n_tokens_neox': 1324, 'n_words': 262}