Ios 块+;弧、堆栈和堆

Ios 块+;弧、堆栈和堆,ios,automatic-ref-counting,block,Ios,Automatic Ref Counting,Block,我想将一个块与某个标识符相关联,并将其存储在字典中以供以后检索 我做错了吗?基本上,我担心我可能会传入一个通过setAction:forProduct在堆栈上声明的块,而引用稍后将无效。ARC够聪明能抓住这个吗 typedef void (^ProductPurchased)(); -(void) setAction:(ProductPurchased)action forProduct:(NSString*)identifier; @property (strong, nonatomic)

我想将一个块与某个标识符相关联,并将其存储在字典中以供以后检索

我做错了吗?基本上,我担心我可能会传入一个通过setAction:forProduct在堆栈上声明的块,而引用稍后将无效。ARC够聪明能抓住这个吗

typedef void (^ProductPurchased)();

-(void) setAction:(ProductPurchased)action forProduct:(NSString*)identifier;

@property (strong, nonatomic) NSMutableDictionary *actions;

-(void) setAction:(ProductPurchased) action forProduct:(NSString*)identifier
{
    [self.actions setObject:action forKey:identifier];
}
看看答案。您需要在将其添加到字典之前使用Block_copy(),在删除它之后使用Block_release()