当钩住某个方法时,会传递一个参数,即NSMallocBlock。我需要保存此值以在以后从代码中调用该方法时使用。我试图将其保存为用户默认设置,但这会导致程序崩溃。无论如何,有没有保存对象或以后重新创建它的方法?
答案 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:]
仅支持NSData
,NSString
,NSNumber
,NSDate
,NSArray
或NSDictionary
。如果尝试将其设置为任何其他类型的对象,通常会崩溃。可以在以下位置找到更多详细信息:setObject:forKey: - NSUserDefaults | Apple Developer Documentation。