Swift 这个最小的UITextFieldDelegate实现缺少什么导致崩溃?

Swift 这个最小的UITextFieldDelegate实现缺少什么导致崩溃?,swift,uitextfielddelegate,Swift,Uitextfielddelegate,在模拟器中选择文本字段时发生崩溃。调试器似乎没有告诉我任何有用的信息 import UIKit class TextField: NSObject, UITextFieldDelegate {} 在视图控制器中: override func viewDidLoad() { super.viewDidLoad() textField.delegate = TextField() } @IBOutlet weak var textField: UITextField! // ass

在模拟器中选择文本字段时发生崩溃。调试器似乎没有告诉我任何有用的信息

import UIKit
class TextField: NSObject, UITextFieldDelegate {}
在视图控制器中:

override func viewDidLoad() {
    super.viewDidLoad()
    textField.delegate = TextField()
}
@IBOutlet weak var textField: UITextField! // assigned in IB.

无法将委托设置为
TextField()

只需将委托设置为self,因为您在类中使用UITextFieldDelegate:

textField.delegate = self

无法将委托设置为
TextField()

只需将委托设置为self,因为您在类中使用UITextFieldDelegate:

textField.delegate = self

无法将委托设置为
TextField()

只需将委托设置为self,因为您在类中使用UITextFieldDelegate:

textField.delegate = self

无法将委托设置为
TextField()

只需将委托设置为self,因为您在类中使用UITextFieldDelegate:

textField.delegate = self

UITextField.delegate是无主的,因此在viewDidLoad返回后代理被解除分配。

UITextField.delegate是无主的,因此在viewDidLoad返回后代理被解除分配。

UITextField.delegate是无主的,因此,在viewDidLoad返回后,代理被解除分配。

UITextField.delegate是无主的,因此在viewDidLoad返回后,代理被解除分配。

将代理分配给属性

首先将customTextFieldDelegate添加为属性

var customTextFieldDelegate = TextField()
在ViewDidload中

self.textField.delegate = self.customTextFieldDelegate

将委托指定给属性

首先将customTextFieldDelegate添加为属性

var customTextFieldDelegate = TextField()
在ViewDidload中

self.textField.delegate = self.customTextFieldDelegate

将委托指定给属性

首先将customTextFieldDelegate添加为属性

var customTextFieldDelegate = TextField()
在ViewDidload中

self.textField.delegate = self.customTextFieldDelegate

将委托指定给属性

首先将customTextFieldDelegate添加为属性

var customTextFieldDelegate = TextField()
在ViewDidload中

self.textField.delegate = self.customTextFieldDelegate


如果这样做,您将在视图的控制器中放置文本字段代码。代码属于文本字段的控制器。否@克里斯汀是对的。创建
TextField
的实例并将其分配给代理。这完全是胡说八道。上次我检查时,关注点分离被认为是编程胡说八道的对立面。考虑到苹果提供的功能,我能想到的最好的分离关注点的方法是为每个UITextField创建一个实现UITextFieldDelegate的对象。如果这样做,您将在视图的控制器中放置文本字段代码。代码属于文本字段的控制器。否@克里斯汀是对的。创建
TextField
的实例并将其分配给代理。这完全是胡说八道。上次我检查时,关注点分离被认为是编程胡说八道的对立面。考虑到苹果提供的功能,我能想到的最好的分离关注点的方法是为每个UITextField创建一个实现UITextFieldDelegate的对象。如果这样做,您将在视图的控制器中放置文本字段代码。代码属于文本字段的控制器。否@克里斯汀是对的。创建
TextField
的实例并将其分配给代理。这完全是胡说八道。上次我检查时,关注点分离被认为是编程胡说八道的对立面。考虑到苹果提供的功能,我能想到的最好的分离关注点的方法是为每个UITextField创建一个实现UITextFieldDelegate的对象。如果这样做,您将在视图的控制器中放置文本字段代码。代码属于文本字段的控制器。否@克里斯汀是对的。创建
TextField
的实例并将其分配给代理。这完全是胡说八道。上次我检查时,关注点分离被认为是编程胡说八道的对立面。考虑到苹果提供的功能,我能想到的最好的分离关注点的方法是为每个UITextField创建一个实现UITextFieldDelegate的对象。你能在Xcode中给出你的崩溃日志吗?我认为问题是在你选择文本字段之前,委托(一个TextField)已经从内存中删除了。您必须为viewcontroller创建一个变量:var textFieldDelegate=TextField(),以保持对该对象的引用我也想到了这一点,并且正在测试。您可以在Xcode中提供崩溃日志吗?我认为问题是在您选择文本字段之前,代理(一个TextField)已从内存中删除。您必须为viewcontroller创建一个变量:var textFieldDelegate=TextField(),以保持对该对象的引用我也想到了这一点,并且正在测试。您可以在Xcode中提供崩溃日志吗?我认为问题是在您选择文本字段之前,代理(一个TextField)已从内存中删除。您必须为viewcontroller创建一个变量:var textFieldDelegate=TextField(),以保持对该对象的引用我也想到了这一点,并且正在测试。您可以在Xcode中提供崩溃日志吗?我认为问题是在您选择文本字段之前,代理(一个TextField)已从内存中删除。您必须为viewcontroller创建一个变量:var textFieldDelegate=TextField(),以保持对该对象的引用我也想到了这一点,我正在测试。self。没有做任何事,但是的,这基本上是必须做的。我觉得奇怪的是,提及一名代表并不强烈。还有什么更可能希望引用一位代表,而这正是授权职责的事情呢?简短的回答是防止强引用循环。。UItableView数据源是另一个地方。。。你可以在苹果的swift指南中的“ARC”下找到更多关于它的信息。有一条注释说,“如果你试图在它引用的实例被释放后访问一个无主引用,你将触发一个运行时错误”。没有做任何事,但是的,这基本上是必须做的。我觉得奇怪的是,提及一名代表并不强烈。还有什么更可能想要一个r