相关疑难解决方法(0)

是否可以按内容比较两个Objective-C块?

float pi = 3.14;
float (^piSquare)(void) = ^(void){ return pi * pi; };
float (^piSquare2)(void) = ^(void){ return pi * pi; };

[piSquare isEqualTo: piSquare2]; // -> want it to behave like -isEqualToString...
Run Code Online (Sandbox Code Playgroud)

comparison objective-c objective-c-blocks

18
推荐指数
2
解决办法
3232
查看次数

有没有办法对闭包进行编码和解码?

出于某种原因,我需要序列化一个包含多个闭包字段的类对象。

像这样:

import Foundation

class Foo: NSObject, NSCoding {

    var bar: (() -> Void)

    override init() {
        bar = {}
    }

    required init(coder aDecoder: NSCoder) {
        bar = aDecoder.decodeObject(forKey: "bar") as! (() -> Void)
    }

    func encode(with aCoder: NSCoder) {
        aCoder.encode(bar, forKey: "bar")
    }

}

let foo = Foo()
foo.bar = {
    print("Help!")
}

let data = NSKeyedArchiver.archivedData(withRootObject: foo)
let object = NSKeyedUnarchiver.unarchiveObject(with: data) as! Foo
Run Code Online (Sandbox Code Playgroud)

有什么办法可以得到我想要的吗?

serialization encode decode nscoder swift

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