Objective-C / THEOS-是否可以保存NSMallocBlock?

时间:2018-07-14 04:15:33

标签: ios objective-c theos

当钩住某个方法时,会传递一个参数,即NSMallocBlock。我需要保存此值以在以后从代码中调用该方法时使用。我试图将其保存为用户默认设置,但这会导致程序崩溃。无论如何,有没有保存对象或以后重新创建它的方法?

1 个答案:

答案 0 :(得分:0)

从本质上讲,不能被阻止。

@interface AwesomeClass : NSObject

@property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);

@end

(通过How Do I Declare A Block in Objective-C?阻止语法)

这将允许您保留对块的引用,以供以后程序执行时使用。请注意,由于大多数块都是在堆栈上初始化的,因此应始终使用copy。如果不这样做,就会发生奇怪的事情。

顺便说一句,NSUserDefaults设计用于在程序执行之间持久存储少量数据。 -[NSUserDefaults setObject:forKey:]仅支持NSDataNSStringNSNumberNSDateNSArrayNSDictionary。如果尝试将其设置为任何其他类型的对象,通常会崩溃。可以在以下位置找到更多详细信息:setObject:forKey: - NSUserDefaults | Apple Developer Documentation