小编arv*_*inq的帖子

Swift :同时访问 0x10959c600,但修改需要对 Structs 进行独占访问

我想了解为什么使用结构会导致此问题,而类则不会。我在将元素附加到数组并让观察者加载表时遇到了问题。以下是代码:

Order.swift - 订购的商品

struct Order {
    var menuItems: [MenuItem]
    init(menuItems: [MenuItem] = []) {
        self.menuItems = menuItems
    }
}
Run Code Online (Sandbox Code Playgroud)

MenuController.swift - 包含订单和共享实例

struct MenuController {  
    static var shared: MenuController = MenuController()
    static let orderNotification = Notification.Name("MenuController.orderUpdated")

    var order = Order() {
        didSet {
            NotificationCenter.default.post(name: MenuController.orderNotification,
                                            object: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

MenuItemViewController.swift - 订购屏幕

@IBAction func orderButtonTapped(_ sender: UIButton) {
     MenuController.shared.order.menuItems.append(menuItem)
 }
Run Code Online (Sandbox Code Playgroud)

OrderTableViewController.swift - 商品订购屏幕

override func viewDidLoad() {
    super.viewDidLoad()

    NotificationCenter.default.addObserver(tableView, 
                      selector: #selector(UITableView.reloadData),
                      name: MenuController.orderNotification, object: nil)
}
... …
Run Code Online (Sandbox Code Playgroud)

observers tableview ios swift

4
推荐指数
1
解决办法
2026
查看次数

标签 统计

ios ×1

observers ×1

swift ×1

tableview ×1