블록 반복 참조 여부

1251 단어
Block 내부 순환 인용 여부 판단: 자신이 가진 대상이 자신을 가지고 있는지 여부.
#interface Student :NSobject
@property(copy,nonatomic) void(^callBlock)(void);
@end
-(void)testBlockFunc:(void(^)(void))blockFunc;

1 대상이 Block을 소지하지 않음
@implementation Student
-(void)testBlockFunc:(void(^)(void))blockFunc
{
      blockFunc();
      NSLong("Hello");
}
@end

2 대상이 Block을 소지
@implementation Student
-(void)TestBlockFunc:(void(^)(void))blockFunc
{
      self.callBlock = [blockFunc copy];
      self.callBlock();
      NSLong("Hello");
}
@end

다음 생성 호출

@interface ViewController()
@property(nonatomic,strong)Student*ss
@end
@implementation ViewController
// block
-(void)viewDidLoad{
  Student * student = [Student New];
  [student testBlockFunc:(^){
  self.view...
}];
//  weak self;   self  student
}

//  
-(void)viewDidLoad{
//testBlockFunc  1 
  self.ss = [Student New];
  [self.ss testBlockFunc:(^){
  self.view...
}];
//   weak self   B ss   block B   ss block     
}
//  
-(void)viewDidLoad{
//testBlockFunc  2
  self.ss = [Student New];
  [self.ss testBlockFunc:(^){
  self.view...
}];
//   weak self   B ss   block B   ss block      
}
@end

좋은 웹페이지 즐겨찾기