小编kal*_*iya的帖子

Linux上的GCD内存膨胀Swift

我正在与一个无限制的消费者一起解决生产者 - 消费者问题.生产者可以将任意数量的任务放入处理队列中.当队列为空时,使用者将阻止该线程.

while true {
    do {
        guard let job = try self.queue.dequeue() else { return }
        job.perform()

    } catch {
        print(error)
    }
}
Run Code Online (Sandbox Code Playgroud)

通常情况下,我会将循环中的所有内容放在自动释放池中,但是,它在Linux上不可用.似乎ARC永远不会释放循环中的对象.我该如何控制内存使用?

linux grand-central-dispatch swift

8
推荐指数
1
解决办法
259
查看次数

是否有其他人在使用Java 8和Android Studio 3.0时遇到问题?

我使用Java 8时遇到问题

 compileOptions {
                sourceCompatibility JavaVersion.VERSION_1_8
                targetCompatibility JavaVersion.VERSION_1_8
            }
Run Code Online (Sandbox Code Playgroud)

我得到错误

Execution failed for task ':app:transformClassesWithDesugarForDebug'. > 
com.android.build.api.transform.TransformException: 
java.lang.RuntimeException: java.lang.RuntimeException: 
com.android.ide.common.process.ProcessException: Error while executing java 
process with main class 
Run Code Online (Sandbox Code Playgroud)

java android android-studio

6
推荐指数
1
解决办法
217
查看次数

是否可以强制 MapKit 在没有聚类的情况下显示所有注释?

我有两个类都符合MKAnnotation,我想知道,MapKit当用户缩小并显示所有注释时,有没有办法强制不聚集注释?

mapkit mkannotation ios swift

4
推荐指数
2
解决办法
1969
查看次数

在 Swift 中创建具有多个自定义单元格的 UITableView

UITableView使用故事板和 tableView 方法创建多个自定义单元格的当前最佳方法是什么?

现在,我正确地将我的JSON响应分为 3 个数组,然后我想用它来用 3 个不同的自定义单元格更新我的 tableView。

class MainViewController: UIViewController {

    // MARK: - Properties
    var starters = [Starter]()
    var dishes = [Dish]()
    var deserts = [Desert]()

    // MARK: - Outlets
    @IBOutlet weak var foodTableView: UITableView!

    // MARK: - Functions
    func updatDisplay() {
        ApiHelper.getFoods { starters, dishes, deserts in
            self.starters = starters
            self.dishes = dishes
            self.deserts = deserts
            self.foodTableView.reloadData()
        }
    }

    // MARK: - View Lifecycle
    override func viewDidLoad() {
        super.viewDidLoad()
        updatDisplay()
    }
}

extension …
Run Code Online (Sandbox Code Playgroud)

json uitableview swift

2
推荐指数
1
解决办法
5592
查看次数

Swift - 有没有办法匹配错误而不抛出?

在某些情况下,错误作为参数提供而不是抛出。一个示例可以是所Result<T, Error>提供的完成处理程序。我想匹配错误而不抛出它。

通过抛出错误匹配的示例:

enum MyError: Error {
    case error
}

func process(error: Error) {
    do {
        throw error
    } catch MyError.error {
        print("this is it")
    } catch {
        print("unknown error")
    }
}

process(error: MyError.error)
Run Code Online (Sandbox Code Playgroud)

更新:

即使对于系统提供的错误(例如URLError不是enum类型的错误),匹配也应该有效。

func process(error: Error) {
    do {
        throw error
    } catch URLError.timedOut {
        print("this is not it")
    } catch URLError.cancelled {
        print("this is it")
    } catch {
        print("unknown error")
    }
}

process(error: URLError(.cancelled))
Run Code Online (Sandbox Code Playgroud)

swift

2
推荐指数
1
解决办法
977
查看次数

如何让[NsApp run]不被阻塞?

我是一个完整的可可新手。

现在,我的简单 Hello World 应用程序在[NsApp run]从 main()调用后阻塞。

我所需要的只是创建一个窗口而不是阻塞 main()。

我希望我的应用程序表现得像 glfw:

https://github.com/glfw/glfw/blob/master/src/cocoa_window.m#L1022

出于某种原因,它不会在那里阻塞。实际上,您可以删除此行,它仍然可以工作。

我一直在玩 glfw 源来弄清楚它们的不同之处。例如,[NsApp run]如果我删除,则会阻止[NSApp setDelegate:_glfw.ns.delegate];

但不是这样。

根据苹果文档

NSApplication 类在初始化期间和事件循环内部——特别是在其初始化(或共享)和 run() 方法中设置 @autorelease 块。

通常,应用程序在事件循环运行时或通过从 ni​​b 文件加载对象来创建对象,因此缺乏访问权限通常不是问题。但是,如果您确实需要在 main() 函数本身中使用 Cocoa 类(除了加载 nib 文件或实例化 NSApplication),您应该创建一个 @autorelease 块来包含使用这些类的代码。

我想这就是我需要的,但我不知道如何使用 @autorelease 块。

谢谢你的帮助。

macos cocoa objective-c

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