将 Obj C 代码转换为 Swift weak self

Convert Obj C code to Swift weak self

我正在使用代码 here 但我很难转换

__weak __typeof(self) weakSelf = self;

到Swift。有没有办法让我把下面的代码转换成Swift?即使在阅读 material 说 [unowned self] 或 [weak self] 后,我仍然坚持转换为 Swift。

        __weak __typeof(self) weakSelf = self;
        UIViewController *controller = [self.gamingPageViewController viewControllerAtIndex:index];
        [self.gamingPageViewController setViewControllers:@[controller]
        direction:(self.gamingPageIndex<index)?UIPageViewControllerNavigationDirectionForward:UIPageViewControllerNavigationDirectionReverse
        animated:NO
        completion:^(BOOL finished) {

        // Method to not mess up view order in pageview            
        UIPageViewController* pvcs = weakSelf.gamingPageViewController;
        if (!pvcs) return;
        dispatch_async(dispatch_get_main_queue(), ^{
        [pvcs setViewControllers:@[controller]
        direction:UIPageViewControllerNavigationDirectionForward
        animated:NO completion:nil];
        });

        }];

在 Swift 中,您不需要在闭包外声明 weakSelf 变量。

只需按如下方式定义完成块:

{ [weak self] (finished) -> () in ... }

然后在块内使用 self? ,以防它可能是 nil.

如果 self 不能是 nil,您可能需要使用 [unowned self] 而不是 [weak self]