Objective c 函数返回的块的内存管理

Objective c 函数返回的块的内存管理,objective-c,Objective C,如果我有一个返回一个块的类函数,我需要对该块进行内存管理吗 typedef BOOL (^Block)(ParamType* param); + (Block) makeBlock: (SeedParamType* seed) { return ^BOOL (ParamType* param) { // do something with seed return someBoolVal; }; } @interface SomeCl

如果我有一个返回一个块的类函数,我需要对该块进行内存管理吗

typedef BOOL (^Block)(ParamType* param);


+ (Block) makeBlock: (SeedParamType* seed)
{
    return ^BOOL (ParamType* param)
    {
        // do something with seed
        return someBoolVal;
    };
}


@interface SomeClass() 
@property (copy, nonatomic) Block                 theBlock;
@end
我是否需要在内存管理方面明确地做类似的事情,或者在这种情况下我会处理所有事情


谢谢

假设手动保留/释放,则该代码无效。您需要返回块的副本。你甚至可以:

+ (Block) makeBlock: (SeedParamType* seed)
{
    return [[^BOOL (ParamType* param)
    {
        // do something with seed
        return someBoolVal;
    } copy] autorelease];
}

有了ARC,你会没事的。那里有足够的信息让it知道如何管理它

虽然语法有点错误,但应该是:

+ (Block) makeBlock: (SeedParamType*) seed
{
    return ^BOOL (ParamType* param)
    {
        // do something with seed
        return someBoolVal;
    };
}

“假设手动保留/释放”谢谢,但如前所述,我使用的是ARC。我看不出您的语法和我的语法有什么区别?
+(Block)makeBlock:(SeedParamType*)seed
,右括号放错了位置。