gpt4 book ai didi

objective-c - 开始表 : block alternative?

转载 作者:行者123 更新时间:2023-12-03 16:27:41 26 4
gpt4 key购买 nike

Snow Leopard 没有引入一些替代旧的 beginSheet: 方法来允许使用 block 来完成最后的工作吗?我不喜欢在另一个回调方法中使用它。

最佳答案

没关系。我在这两个网站找到了我要找的东西:

http://www.mikeash.com/pyblog/friday-qa-2009-08-14-practical-blocks.html , http://www.cocoabuilder.com/archive/cocoa/281058-sheets-blocks-and-garbage-collector.html

事实上,这就是代码,它与 GC 和非 GC 完全兼容:

@implementation NSApplication (SheetAdditions)

- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow didEndBlock:(void (^)(NSInteger returnCode))block
{
[self beginSheet:sheet
modalForWindow:docWindow
modalDelegate:self
didEndSelector:@selector(my_blockSheetDidEnd:returnCode:contextInfo:)
contextInfo:Block_copy(block)];
}

- (void)my_blockSheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{
void (^block)(NSInteger returnCode) = contextInfo;
block(returnCode);
Block_release(block);
}

@end

关于objective-c - 开始表 : block alternative?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com