通过委托自动存储数据(快速)

时间:2016-06-30 03:21:57

标签: ios swift

class BaseViewController: UIViewController,departmentMenuDelegate{
var deptId1: NSMutableArray = []
var deptSelectedIndexPath : NSIndexPath?
var deptSelectedProfileName : String = ""

func returnDeptId()-> NSMutableArray
{
    return deptId1
}
}

class DepartmentMenuController: UIViewController,,UITableViewDataSource, UITableViewDelegate{
var deptId: NSMutableArray = []

var testing : Int = 0
weak var delegate : departmentMenuDelegate?

override func viewDidLoad() {
    super.viewDidLoad()
    deptId = (delegate?.returnDeptId())!
    deptId = ["suds","sdsds"]
}
}

问题1:当我在DepartmentMenuController中为deptId添加值时,它会自动将值存储到BaseViewController中的deptId。为什么会这样?如果我删除deptId =(delegate?.returnDeptId())!,则问题不存在

它只发生在NSMutableArray中,而不是其他类型(例如String)

问题2:对于正常情况,会发生这种情况吗?我想知道这是我程序中的问题

1 个答案:

答案 0 :(得分:0)

当您致电委托时,您将通过引用传递。我想这就是你要找的东西。

class BaseViewController: UIViewController,departmentMenuDelegate{
  var deptId: NSMutableArray = []
  var deptSelectedIndexPath : NSIndexPath?
  var deptSelectedProfileName : String = ""

  func returnDeptId(departmentID: NSMutableArray) -> NSMutableArray {
      for i in 0..<deptId.count {
        departmentID.append(deptId[i] copy)
      }
      return departmentID
  }
}

class DepartmentMenuController: UIViewController, UITableViewDelegate {

  var deptId: NSMutableArray = []
  var testing : Int = 0
  weak var delegate : departmentMenuDelegate?

  override func viewDidLoad() {
      super.viewDidLoad()
      deptId = (delegate?.returnDeptId(deptId))!
      deptId = ["suds","sdsds"]
  }
}