Ios 我班上有两个内班,我可以';swift中的初始化类
我不能初始化内部类。IDE me返回错误,即在初始化所有存储属性之前使用了“self”。我附加的图片,其中看错误是确定的Ios 我班上有两个内班,我可以';swift中的初始化类,ios,swift,Ios,Swift,我不能初始化内部类。IDE me返回错误,即在初始化所有存储属性之前使用了“self”。我附加的图片,其中看错误是确定的 编译器是正确的,您试图在初始化所有存储属性之前将self传递给Customer的构造函数,因为在初始化会话对象之前,会话不会初始化,但这需要自我——您的两个需求是相互排斥的 您可能需要重新思考您的架构;如果没有其他内容,则从Customer到Session的引用与从Session到Customer的引用相结合,将为您提供一个保留周期和内存泄漏 如果您想使用当前架构,最好将会话
编译器是正确的,您试图在初始化所有存储属性之前将
self
传递给Customer
的构造函数,因为在初始化会话
对象之前,会话
不会初始化,但这需要自我
——您的两个需求是相互排斥的
您可能需要重新思考您的架构;如果没有其他内容,则从Customer
到Session
的引用与从Session
到Customer
的引用相结合,将为您提供一个保留周期和内存泄漏
如果您想使用当前架构,最好将会话
的客户
属性设置为弱可选,以避免初始化问题和保留周期
class Customer {
let session: Session
let auth: Auth
init() {
self.auth = Auth()
self.session = Session()
session.customer = self
}
class Session {
weak var customer: Customer?
}
}
您可以将customer
设为隐式展开选项,以避免每次引用时都需要显式展开,但如果customer
被释放或未设置,则有崩溃的风险:
class Session {
weak var customer: Customer!
}
就风格而言,Swift属性和变量应该以小写字母开头,并使用驼峰大小写,因此
auth
、session
和userID
,而不是auth
、session
和userID
不能创建递归结构化类
- 初始化外部类需要内部类
- 初始化内部类需要外部类
类外部类{
类内部类{
让外面的驴:外面的驴
初始化(外部类:外部类){
self.outerClass=outerClass
}
}
让innerClass:innerClass
init(){
self.innerClass=内部类(外部类:self)
}
}
请将您的问题包含为文本的相关代码-图像无法复制到答案中,对搜索引擎也不友好。就风格而言,Swift属性和变量应该以小写字母开头,并使用驼峰大小写,因此auth
,session
和userID
,而不是auth
,session
和USER\u ID
self尚未初始化。只有在所有存储属性初始化并创建强引用循环并使其中一个弱引用循环之前,才能使用它