小编Bra*_*ott的帖子

在swift中嵌套闭包中正确放置捕获列表

我在哪里定义Swift中嵌套闭包的捕获引用?

以此代码为例:

import Foundation

class ExampleDataSource {
    var content: Any?
    func loadContent() {
        ContentLoader.loadContentFromSource() { [weak self] loadedContent in
            // completion handler called on background thread
            dispatch_async(dispatch_get_main_queue()) { [weak self] in
                self?.content = loadedContent
            }
        }
    }
}

class ContentLoader {
    class func loadContentFromSource(completion: (loadedContent: Any?) -> Void) {
        /*
        Load content from web asynchronously, 
        and call completion handler on background thread.
        */
    }
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,[weak self]在两个尾随闭包中使用,但是如果我[weak self]从任何一个尾随闭包中省略,编译器都非常高兴.

因此,我有3个选项来定义我的捕获列表:

  1. 定义每个嵌套闭包上的捕获,直到引用
  2. 仅在第一个闭包上定义捕获.
  3. 仅在实际使用引用的最嵌套闭包上定义捕获.

我的问题是:

如果我知道我ExampleDataSource可以 …

closures nested capture ios swift

14
推荐指数
1
解决办法
1401
查看次数

具有可读内容宽度的UICollectionViewController流布局

我有一个正在UICollectionView使用的流程布局,并且正在尝试实现UITableViewController与具有可读内容宽度的相同的边距。

我最想匹配此布局行为的是将嵌入UICollectionViewControllerUIViewController并具有嵌入的视图“跟随可读宽度”。

嵌入在UIViewController中的UICollectionViewController

在这里,蓝绿色是,蓝绿色UIViewControllerUICollectionViewController。问题在于,蓝绿色区域不会滚动,UICollectionView并且滚动指示器也未如您所愿地沿屏幕边缘。

我的问题是:

如何在不嵌入的情况下实现此布局UICollectionViewController

我的猜测是,我可以通过某种方式设置UICollectionView左右部分插图以匹配可读的内容指南页边距,并通过覆盖viewWillTransition(to size: with coordinator:)和观察UIContentSizeCategoryDidChange通知来更新它们,但是我不确定该怎么做。

ios uicollectionview

11
推荐指数
1
解决办法
641
查看次数

标签 统计

ios ×2

capture ×1

closures ×1

nested ×1

swift ×1

uicollectionview ×1