相关疑难解决方法(0)

我还应该复制/ Block_copy ARC下的块吗?

我刚刚偶然发现了以下SO主题:我们为什么要复制块而不是保留?其中包含以下句子:

但是,从iOS 6开始,它们被视为常规对象,因此您无需担心.

我真的很困惑这个断言,这就是为什么我要问:这个断言是否真的暗示Objective-C开发人员不需要

@property (copy) blockProperties 要么

[^(...){...) {} copy]

将块及其内容从堆栈复制到堆中了吗?

我希望我所做的描述很清楚.

请详细说明.


类似的问题

在ARC下,当直接分配给ivar时,是否会自动复制块?.

objective-c objective-c-blocks automatic-ref-counting

22
推荐指数
2
解决办法
1万
查看次数

Cocoa阻止作为强大的指针与副本

我用块做了好几次,就像我有强烈参考的指针一样

我听说你应该使用copy,但是使用块作为指针而不是原始对象的含义是什么?

我从来没有得到编译器的抱怨,我不应该使用

@property (nonatomic, strong) MyBlock block;
Run Code Online (Sandbox Code Playgroud)

但应该使用

@property (nonatomic, copy) MyBlock block;
Run Code Online (Sandbox Code Playgroud)

据我所知,块只是一个对象,所以为什么还要复制?

cocoa objective-c objective-c-blocks automatic-ref-counting

21
推荐指数
1
解决办法
6771
查看次数

在ARC下,当通过属性分配给ivar时,是否会自动复制块?

假设

typedef void (^MyResponseHandler) (NSError *error);
@property (strong, nonatomic) MyResponseHandler ivarResponseHandler;
synthesize ivarResponseHandler = _ivarResponseHandler;

- (void)myMethod:(MyResponseHandler)responseHandler
{
    self.ivarResponseHandler = responseHandler;
    ...
}
Run Code Online (Sandbox Code Playgroud)

通过@property正确的方式分配给ivar 吗?我知道在手动内存管理中你需要self.ivarResponseHandler = [responseHandler copy];确保将块从堆栈复制到堆中.但是,观看会议322 - 来自WWDC 2011的会议-C深度进展(第25分钟),发言人说ARC自动处理将块分配给ivar.我只是想确定一下.

properties objective-c objective-c-blocks automatic-ref-counting

8
推荐指数
2
解决办法
2659
查看次数