ProgramingTip

Objective-C의 속성에 블록을 저장하는 방법은 무엇입니까?

bestdevel 2020. 10. 15. 08:09
반응형

Objective-C의 속성에 블록을 저장하는 방법은 무엇입니까?


나중에 사용하기 위해 object-c 블록을 속성에 저장하고 싶습니다. 나는 그것을하는 방법을 몰랐기 때문에 조금 봤고 주제에 대한 정보가 거의 없습니다. 하지만 결국에는 그런 것들이 있다고 생각했습니다.

처음에는 Block_copy 및 Block_release를 사용하여 비용을 직접 작성해야합니다.

많은 나는 발견했습니다 블록 NSObjects 있습니다- copy/ - release동일합니다 Block_copy/ Block_release. 그래서 @property (copy)세터와 게터를 자동으로 생성 하는 사용할 수 있습니다 .


편집 : ARC 용으로 업데이트 됨

typedef void(^MyCustomBlock)(void);

@interface MyClass : NSObject

@property (nonatomic, copy) MyCustomBlock customBlock;

@end

@implementation MyClass

@end

MyClass * c = [[MyClass alloc] init];
c.customBlock = ^{
  NSLog(@"hello.....");
}

c.customBlock();

또는 typedef없이

@property (copy, nonatomic) void (^selectionHandler) (NSDictionary*) ;


이에 대한 매우 좋은 설명은 83 페이지에서 시작하는 WWDC 2012 세션 712에서 사용할 수 있습니다. ARC에서 블록을 저장하는 올바른 방법은 다음과 같습니다.

@property(strong) my_block_type work;

유지 주기에주의하십시오. 해결하는 좋은 방법은 더 이상 필요하지 않을 때 설정하는 것입니다.

self.work = nil;

참고 URL : https://stackoverflow.com/questions/4081831/how-to-store-blocks-in-properties-in-objective-c

반응형