我正在尝试使用服务器中的数据刷新我的类实体。因此,我需要在成功块内为self分配一个值。当我在对self的块引用之前使用__weak时,赋值后我的self为零。没有__weak,我有一个保留周期。那么是否可以在块内为self分配一个新值?如果不是,是否还有其他方法可以刷新自身值?
- (void) refreshAssignment:(void (^)())successBlock Error:(void (^)(NSString *errorMessage))errorBlock{
NSString *subUrl = @"/getAssignmentById";
NSDictionary *prs = @{@"assignmentId":self.taskId,
@"mask":[NSNumber numberWithInteger:1]
};
__block __weak Assignment* Self = self;
[[NetworkManager sharedSource] getStandart:prs andUrl:subUrl Success:^(NSDictionary *data) {
Self = [[NetworkManager sharedSource] assignmentsWithArray:data[@"data"] Type:Self.type][0];
} Error:^(NSString *errorMessage) {
errorBlock(errorMessage);
}]; }
答案 0 :(得分:0)
正确的weakSelf
模式是:
__weak typeof(self) weakSelf = self;
但是您不能为self
分配任何内容。
唯一可以分配给self
的地方是init
方法。
可能您想将结果分配给该类中的一个属性。