需要在 Qt 应用程序上从 CFStringRef 手动释放 NSString

问题描述

我正在为 MacOS 实现 Qt 应用程序。我有一些 Objective-C 代码。

这是其中的一部分:

CFTypeRef value;
AXUIElementCopyAttributeValue(element,kAXTitleAttribute,&urlValue);
NSString* valueAsNSString = (NSString*)value;
return valueAsNSString;

稍后在代码(不同的类)中,我使用返回的 NSString 的值使用 QString::fromNSString 将其转换为 QString。 这是我调用上一个片段的代码段。

  NSString* myNSString = [(__bridge id)m_self getMyNSString];
  auto myQString QString::fromNSString(myNSString);
  [myNSString release];

其中 m_self 被声明为 void* 并像这样初始化:

m_self = [[ObjClass alloc] init];

并且也在析构函数中删除:

[(__bridge id)m_self dealloc];

阅读 Qt 文档,它说 QString::fromNSString 从 NSString* 返回副本。我试图释放那个 NSString 但应用程序崩溃了,我不明白。有人能解释一下原因吗?

我没有在启用 ARC 的情况下编译应用程序。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)