- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
考虑这个 ARC 代码:
- (void)main {
NSString *s = [[NSString alloc] initWithString:@"s"];
[NSApp beginSheet:sheet
modalForWindow:window
modalDelegate:self
didEndSelector:@selector(sheetDidEnd:returnCode:context:)
contextInfo:(__bridge void *)s
];
}
- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode context:(void *)context {
NSString *s = (__bridge_transfer NSString *)context;
}
问题:在第 7 行,应该使用 __bridge
,还是使用 __bridge_retained
,或者没有关系,还是选择取决于字符串的保留计数(即, 字符串是显式分配还是通过像 +[NSString stringWithString:]
这样的类初始值设定项自动释放?
最佳答案
一般情况下都是
// Object to void *:
contextInfo:(__bridge void *)s
// void * to object:
NSString *s = (__bridge NSString *)context;
或
// Object to void *, retaining the object:
contextInfo:(__bridge_retained void *)s
// void * to object, transferring ownership.
// The object is released when s goes out of scope:
NSString *s = (__bridge_transfer NSString *)context;
在第一种情况下,没有所有权转移,因此主程序只要工作表处于事件状态,就必须持有对该对象的强引用。
第二种情况,对象在创建sheet的时候保留,释放在 sheetDidEnd:
方法中。不要求主程序持有一个强引用,所以这是安全的方法。
关于objective-c - 圆弧 : __bridge versus __bridge_retained using contextInfo test case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20842310/
谢谢您的阅读,这是我的问题。 我正在尝试保存图片(使用UIImagePickerController方法拍摄的图片),但是出现错误。错误为“不响应选择器图像:didFinishSavingWithEr
我需要将带有几个选项的 NSDictionary 传递给 NSAlert - (void)beginSheetModalForWindow:(NSWindow *)window modalDelega
我第一次尝试使用基于 NSDocument 的应用程序。(Xcode 9.2、Swift 4、macOS 10.12 Sierra 和 Cocoa/AppKit) 我想知道在没有自动保存的情况下实现关
这个问题的答案可能很简单,但目前我很困惑,欢迎任何帮助。 我已将上下文菜单附加到表格 View 。菜单选项之一是删除 TableView 中的元素。我正在使用 NSAlert 弹出模式窗口以确认删除。
当用户点击默认按钮时,我从下面的警报表代码中收到以下错误: -[NSRectSet objectForKey:]: unrecognized selector sent to instance 0x4
我有一个 UITableView。当点击一个单元格时,我的应用程序会生成相关图像。图像生成是在后台线程上完成的,因为一些图像需要相当长的时间来渲染。渲染图像后,将在主线程上调用 UIImageWrit
我目前使用 Postman 应用程序来尝试各种 Sharepoint Api。 要检索 RequestDigest,我知道必须对/_api/contextinfo 进行 api 调用,Body 中没有
在我的应用程序中,NSDocument 子类任务关键型硬件 - 用户真的不想意外关闭文档!因此,我实现了 canCloseDocumentWithDelegate... 以显示 NSAlert 并在关
在我的应用程序中,NSDocument 子类关键任务硬件——用户真的不想意外关闭文档!所以,我实现了 canCloseDocumentWithDelegate... 以显示 NSAlert 并在关闭前
考虑这个 ARC 代码: - (void)main { NSString *s = [[NSString alloc] initWithString:@"s"]; [NSApp beg
我是一名优秀的程序员,十分优秀!