У меня следующая структураИщете понять, почему делегат живёт
Main ViewController: он отвечает за вызов контроллера (A). (A) ViewController: создать экземпляр CustomClass и имеет делегат для этого класса. CustomClass: в каждом периоде в 1 секунду сообщение отправляется на контроллер (A) через делегат.
До здесь все работает нормально. Как только я вернусь в Main ViewController, делегат останется в живых, другими словами, делегат обновит переменную A (ViewController). Я проверил, что viewDidDisappear из (A) ViewController вызывается. Когда я снова вернусь из Main ViewController в (A) ViewController, создается новый экземпляр переменной. В любом случае, я этого не понимаю.
Помимо этого сомнения, я хотел бы понять, почему делегат остается в живых, когда я возвращаюсь к контроллеру основного вида. Я использую UINavigationItem для навигации.
Я новичок в разработке IOS.
Спасибо заранее!
Редактировать 1: (A) ViewController вызывается из MainViewController Segue. Сегю добавили через раскадровку.
MainViewController.swift
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
AViewController.swift
class ScanDevices : UIViewController, CustomClassDelegate {
var myInts : [Int] = []
var customClass : CustomClass!
override func viewDidLoad() {
super.viewDidLoad()
print("viewDidLoad")
if customClass == nil {
customClass = CustomClass()
customClass.customClassDelegate = self
}
}
override func viewWillAppear(animated: Bool) {
print("viewWillAppear")
}
override func viewDidAppear(animated: Bool) {
print("viewDidAppear")
}
override func viewWillDisappear(animated: Bool) {
print("viewWillDisappear")
}
override func viewDidDisappear(animated: Bool) {
print("viewDidDisappear")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func didDiscoverPeripheralInt(peripheral: Int) {
myInts.append(peripheral)
print("Number = \(myInts.count)")
}
}
CustomClass.swift
class CustomClass : NSObject {
var customClassDelegate : CustomClassDelegate?
// MARK: init
override init() {
super.init()
NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "writeInt", userInfo: nil, repeats: true)
}
func writeInt() {
CustomClassDelegate?.didDiscoverPeripheralInt(3)
}
}
Ваш вопрос показывает кучу преимущественно пустых методов - как они полезны? Где создаются экземпляры? Когда каждый класс вызывает других? Укажите детали, связанные с вопросом. – Wain
Извините, я редактировал код AViewController. Экземпляр CustomClass создается в методе viewDidLoad MainViewController. Остальные пустые методы - это только понимание жизненного цикла контроллера. – Arubu