相关疑难解决方法(0)

1126
推荐指数
17
解决办法
84万
查看次数

Java中Runnable和Callable接口之间的区别

在Java中设计并发线程时使用RunnableCallable接口有什么区别,为什么要选择一个而不是另一个呢?

java multithreading interface callable runnable

473
推荐指数
12
解决办法
27万
查看次数

如何正确处理带参数的Swift块中的弱自我

在我TextViewTableViewCell,我有一个变量来跟踪块和一个配置方法,其中传入和分配块.
这是我的TextViewTableViewCell班级:

//
//  TextViewTableViewCell.swift
//

import UIKit

class TextViewTableViewCell: UITableViewCell, UITextViewDelegate {

    @IBOutlet var textView : UITextView

    var onTextViewEditClosure : ((text : String) -> Void)?

    func configure(#text: String?, onTextEdit : ((text : String) -> Void)) {
        onTextViewEditClosure = onTextEdit
        textView.delegate = self
        textView.text = text
    }

    // #pragma mark - Text View Delegate

    func textViewDidEndEditing(textView: UITextView!) {
        if onTextViewEditClosure {
            onTextViewEditClosure!(text: textView.text)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在我的cellForRowAtIndexPath方法中使用configure方法时,如何在我传入的块中正确使用弱自我.
这是我没有弱自我的情况:

let myCell = tableView.dequeueReusableCellWithIdentifier(textViewCellIdenfitier) as TextViewTableViewCell …
Run Code Online (Sandbox Code Playgroud)

ios retain-cycle swift

143
推荐指数
7
解决办法
11万
查看次数

Objective-C中的同步和异步调用与多线程之间有什么区别?

在最长的时间里,我认为异步是在后台线程上运行某些东西的同义词,而同步意味着在主线程上(阻止UI更新和交互).我明白,不在主线程上运行昂贵的操作是因为它不允许在主线程被占用时发生UI操作,但为什么同步麻烦?

但是,我注意到你可以在主线程上进行异步调用,在后台线程上进行同步调用.

我总是听到人们说不要同步或在主线程上使用昂贵的调用,因为它会阻止用户的UI.这两个不同的问题我应该确保我不这样做吗?有什么区别?

multithreading asynchronous objective-c grand-central-dispatch ios

53
推荐指数
4
解决办法
7万
查看次数

Swift中的函数和方法有什么区别?

我一直认为函数和方法是一样的,直到我通过"Swift编程语言"电子书学习Swift.我发现我不能greet("John", "Tuesday")用来调用我在类中声明的函数,如下面屏幕截图中的电子书所示:

swift中的函数声明

我收到一条错误,说"根据此屏幕截图,错过了参数标签'日:'正在通话中 ":

swift中的错误消息

这是代码: -

import Foundation
import UIKit

class ViewController2: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        //var dailyStatement = greet("John", "Tuesday")
        var dailyStatement = greet("John", day: "Tuesday")
        println(dailyStatement)
    }

    func greet(name: String, day: String) -> String {
        return "Hello \(name), today is \(day)."
    }
}
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我发现了这篇文章:方法和函数之间的区别,在我看来,我在类中声明的函数实际上被称为方法.因此,与用于调用函数的语法相比,我用于调用方法的语法是不同的.

我在Objective-C编程时从未意识到这种差异.

  1. Swift中的函数和方法有什么区别?

  2. 我们何时使用函数?何时使用Swift中的方法?

methods function swift

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

什么'@'符号在Swift中意味着什么?

我没有目标C的经验,所以我遇到了一些符号的问题.在我的"AppDelegate.swift"文件中,顶部有一个"@UIMainApplication".这是什么意思?

另外,如果可能的话,您能否在C++中给我"等效"声明(如果存在)?

谢谢.

swift

13
推荐指数
2
解决办法
5597
查看次数

Swift @escaping 仅适用于非空函数参数?

我从来没有真正理解何时使用@escaping。我理解它的作用(即转义闭包和非转义闭包之间的区别),但tbf我一直依赖Xcode来告诉我何时将修饰符添加到我的参数中。

我的问题是,为什么这种情况@escaping只适用于非零闭包?这就是我的意思:

func someFunc(someArg: Int, callback: @escaping (Error?) -> Void) {
    DispatchQueue.global(qos: .background).async {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面,如果我不添加@escapingXcode 会给我一个错误。但是,如果我callback像下面这样设置可选,则将结果保留 @escaping在 Xcode 错误中:

// This is wrong (Xcode complains about @escaping)
func someFunc(someArg: Int, callback: @escaping ((Error?) -> Void)?) {
    DispatchQueue.global(qos: .background).async {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这是为什么?谢谢你!

ios swift

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

使用Swift 3.0的Singleton

我有Swift 2.0的这个实现,Xcode建议不仅令人困惑,而且还会导致编译错误.它是一个用户传递callfunc闭包的库.

之前

protocol MyProtocol {

}
Run Code Online (Sandbox Code Playgroud)

主要课程

private static var t: dispatch_once_t = 0
private static var singleton: MyProtocol?
public class func getSingleton(callfunc: () -> MyProtocol) -> MyProtocol {
    dispatch_once(&self.t) {
        self.singleton = callfunc()
    }
    return singleton!
}
Run Code Online (Sandbox Code Playgroud)

    private static var __once: () = {
        MyProtocol.singleton = callfunc()
    }()

    open class func getSingleton(_ callfunc: () -> MyProtocol) -> MyProtocol {
        singleton = MyProtocol.__once()
        return singleton!
    }
Run Code Online (Sandbox Code Playgroud)

我基本上需要将参数传递给__once函数.

用户:

class Test: MyProtocol {

}

Main.getSingleton({Test()});
Run Code Online (Sandbox Code Playgroud)

它不是在Swift使用dispatch_once单例模型, …

swift swift3

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