开发者社区 问答 正文

请问block里为何不能操作成员变量?

我想在一个block里对一个成员变量赋值,但是提示“ use of undeclared identifier self"错误,
请问这是怎么回事?
screenshot

代码如下:

 void (^successBlock)(id ) = ^(id responseObject){
    NSLog(@"responseObject:%@",responseObject);
    NSInteger result = [[responseObject objectForKey:@"result"]integerValue];
    if(result == 1){
        self.missionsArr= [[responseObject objectForKey:@"data"]objectForKey:@"list"];
    }else if (result == 0){
        NSLog(@"0");
    }

展开
收起
爵霸 2016-03-13 10:01:33 1986 分享 版权
1 条回答
写回答
取消 提交回答
  • 请把这段代码写在函数体内部,不要写在函数的外面。
    写在外面编译器会把它当成c语言编译,当然c语言是没有所谓的成员变量和self的,只有全局变量和局部变量。
    如果你非要写在外面,你需要这么写:

    YourClass* yourclass;
     @implementation YourClass
    (instancetype)init self = [super self]; yourclass = self; return self; }
    
    void (^successBlock)(id ) = ^(id responseObject){
     yourclass = nil;
     };
     @end
    2019-07-17 19:01:55
    赞同 展开评论
问答地址: