Capturing a variable in a Block when the Block is in the initializer

后端 未结 3 1432
广开言路
广开言路 2021-01-05 04:45

Consider this:

id observer = [[NSNotificationCenter defaultCenter] 
    addObserverForName:MyNotification 
                object:nil 
              


        
3条回答
  •  Happy的楠姐
    2021-01-05 05:00

    Yes, using __block will solve the problem.

    Without it, the Block gets a copy of the variable's value at the time the Block is created. (Which is "uninitialized" in this case.) With it, the Block (in essence) gets the variable itself, so that the value can be changed from within the Block. Thus it will also "track" changes made from outside.

提交回复
热议问题