Почему не просто что-то вроде:
std::ofstream ofs;
...
ofs << my_str;
, а затем:
std::ifstream ifs;
...
ifs >> my_str;
Ну, вы просто вызываете функцию в конце асинхронного обратного вызова. То есть, когда асинхронный обратный вызов закончился - это когда все остальное в асинхронном обратном вызове закончилось! Итак, например:
func myMethod() {
// ... code ...
somebody.doSomethingWith(someObject, asynchronousCallback: {
(thing, otherThing) in
// ... do whatever
// --> CALL THE FUNCTION!
})
// ... code ...
}
Если проблема заключается в том, что вы не знаете, знаете , какую функцию вызывать, вы можете настроить свою окружающую функцию / объект, чтобы кто-то мог hand вы используете функцию, которая является тем, что вы называете в месте, где я сказал «вызвать функцию» в приведенном выше.
Например:
func myMethod(f:() -> ()) { // we receive the function as parameter
// ... code ...
somebody.doSomethingWith(someObject, asynchronousCallback: {
(thing, otherThing) in
// ... do whatever
// --> CALL THE FUNCTION, by saying:
f()
})
// ... code ...
}
Расширяя ответ Мэтта, вы можете сделать myMethod методом, который принимает замыкание в качестве параметра:
func myMethod(completionBlock: (result: String) -> ())
{
// ... code ...
somebody.doSomethingWith(someObject, asynchronousCallback: {
(thing, otherThing) in
// ... do whatever
completionBlock(thing)
})
// ... code ...
}
UIView.animateWithDuration() { ... }
, это то, что вы передаете Cocoa - функция, которую он вызывается для выполнения анимации. См. Также мою книгу: apeth.com/swiftBook/ch02.html#_function_as_value – matt 8 May 2015 в 23:07myMethod
может принимать функцию как параметр; то при «вызове функции» вы называете это. Но есть много других возможных сценариев. См. Этот пример кода для примера: github.com/mattneub/Programming-iOS-Book-Examples/blob/master/… – matt 8 May 2015 в 23:10