如何在块内为self赋值?

时间:2019-03-28 14:28:21

标签: ios objective-c xcode self

我正在尝试使用服务器中的数据刷新我的类实体。因此,我需要在成功块内为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);
}]; }

1 个答案:

答案 0 :(得分:0)

正确的weakSelf模式是:

__weak typeof(self) weakSelf = self;

但是您不能为self分配任何内容。

唯一可以分配给self的地方是init方法。

可能您想将结果分配给该类中的一个属性。