reb*_*ebo 17 objective-c nscoding objective-c-blocks
是否可以使用?编码Objective-C块NSKeyedArchiver?
我不认为Block对象是NSCoding-compliant,因此[coder encodeObject:block forKey:@"block"]不起作用?
有任何想法吗?
bbu*_*bum 19
不,由于各种原因,这是不可能的.块中包含的数据不以任何方式表示,例如,实例变量.没有州的清单,因此无法为归档目的列举州.
相反,我建议你创建一个简单的类来保存你的数据,其实例在处理过程中携带块所使用的状态,并且可以很容易地存档.
要扩展,请说你有一个类:
@interface MyData:NSObject
{
... ivars representing work to be done in block
}
- (void) doYourMagicMan;
@end
Run Code Online (Sandbox Code Playgroud)
然后你可以:
MyData *myWorkUnit = [MyData new];
... set up myWorkUnit here ...
[something doSomethingWithBlockCallback: ^{ [myWorkUnit doYourMagicMan]; }];
[myWorkUnit release]; // the block will retain it (callback *must* Block_copy() the block)
Run Code Online (Sandbox Code Playgroud)
从那里,您可以在MyData上实现归档,保存它等等......关键是将Block视为执行计算的触发器,并将所述计算和计算的必要状态封装到MyData类的实例中.
| 归档时间: |
|
| 查看次数: |
2278 次 |
| 最近记录: |