So you need a pointer to the inner block… I did not find any way of doing this using public API. You might have to dig into private API’s in libBlocksRuntime.
I know how to handle it in the normal case. The issue is how to pull it out of the gnustep specific strict to use it. What do you want to access it for? Invoking it? Copying it?
If it is latter, just copying or retaining the outer block is adequate, as copying the outer block will cause the inner block be retained, which would copy it if it is a stack block.
Hey Guys,
I am implementing the following class:
DEFINE_BLOCK_TYPE(NSBackgroundActivityCompletionHandler, void, NSBackgroundActivityResult); DEFINE_BLOCK_TYPE(GSScheduledBlock, void, NSBackgroundActivityCompletionHandler);
@interface NSBackgroundActivityScheduler : NSObject { NSString *_identifier; NSQualityOfService _qualityOfService; NSTimeInterval _interval; NSTimeInterval _tolerance; BOOL _repeats; BOOL _shouldDefer; } - (instancetype) initWithIdentifier: (NSString *)identifier;
- (NSString *) identifier; - (void) setIdentifier: (NSString *)identifier;
- (NSQualityOfService) qualityOfService; - (void) setQualityOfService: (NSQualityOfService)qualityOfService;
- (BOOL) repeats; - (void) setRepeats: (BOOL)flag;
- (NSTimeInterval) interval; - (void) setInterval: (NSTimeInterval)interval;
- (NSTimeInterval) tolerance; - (void) setTolerance: (NSTimeInterval)interval;
- (BOOL) shouldDefer; - (void) setShouldDefer: (BOOL)flag;
- (void) scheduleWithBlock: (GSScheduledBlock)block;
- (void) invalidate; @end
How do I handle the embedded block GSScheduledBlock?? Declaring it this way compiles, but I have no idea how to access the handler which is passed in.
Any clues?
Thanks, GC
--
|
Sender notified by
Mailtrack
10/26/19, 10:39:17 AM
|
|
![]()
|