💡
原文英文,约500词,阅读约需2分钟。
📝
内容提要
苹果在Xcode 61中引入了NS_DESIGNATED_INITIALIZER标志,增强了初始化器的调用顺序,特别是在Swift中。iOS 8.3对UITableViewController进行了修改,使initWithStyle:成为指定初始化器,但增加了其他初始化器,导致子类化不便。为防止错误调用,建议将其标记为不可用。尽管有改进,UITableViewController的初始化顺序仍存在问题,可能影响应用稳定性。
🎯
关键要点
- 苹果在Xcode 61中引入了NS_DESIGNATED_INITIALIZER标志,增强了初始化器的调用顺序,特别是在Swift中。
- iOS 8.3对UITableViewController进行了修改,使initWithStyle:成为指定初始化器,但增加了其他初始化器,导致子类化不便。
- 为了防止错误调用,建议将不必要的初始化器标记为不可用。
- 尽管有改进,UITableViewController的初始化顺序仍存在问题,可能影响应用稳定性。
❓
延伸问答
NS_DESIGNATED_INITIALIZER标志的作用是什么?
NS_DESIGNATED_INITIALIZER标志增强了初始化器的调用顺序,特别是在Swift中,帮助防止初始化链的破坏。
UITableViewController的指定初始化器有哪些?
UITableViewController的指定初始化器包括initWithStyle:、initWithNibName:bundle:和initWithCoder:。
为什么建议将不必要的初始化器标记为不可用?
建议将不必要的初始化器标记为不可用,以防止用户错误调用,确保子类化的正确性。
UITableViewController的初始化顺序存在哪些问题?
UITableViewController的初始化顺序问题可能导致应用的不稳定性,特别是在调用链不符合预期时。
如何处理UITableViewController的初始化问题?
可以通过将实现包装在clang诊断块中,忽略相关警告来处理初始化问题,但这并不能完全防止错误状态的创建。
iOS 8.3对UITableViewController的修改有什么影响?
iOS 8.3的修改使initWithStyle:成为指定初始化器,但增加了其他初始化器,导致子类化变得不便。
➡️