将 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]
。
我正在使用代码 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]
。