如何在方法块中访问变量?

All*_*len 0 objective-c ios

我正在尝试访问方法块但我不知道如何:

__block NSString *username;
PFUser *user = [[self.messageData objectAtIndex:indexPath.row] objectForKey:@"author"];
[user fetchIfNeededInBackgroundWithBlock:^(PFObject *object, NSError *error) {
    username = [object objectForKey:@"username"]; 
    NSLog(@"%@", username); //returns "bob";
}];
NSLog(@"%@", username); //returns null
Run Code Online (Sandbox Code Playgroud)

如何从块外部的代码访问变量'username'?

ayo*_*yon 6

实际上你正在访问块外的变量用户名.您将获得null,因为该块在另一个线程中运行,并且您在块完成执行后设置该值.因此,当块运行时,你的最后一行已经在主线程中执行了,因此在执行最后一行时没有设置它的值.这就是你得到null的原因.