加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 从Path创建TFENode

发布时间:2020-12-16 07:08:47 所属栏目:百科 来源:网络整理
导读:如何从Path创建TFENode? 编辑: 我有点儿,TGlobalWindowController中有一个方法: struct TString { struct TRefconst __CFString *,TRetainReleasePolicyCFStringRef fString;};...+ (struct TFENode)nodeForUrl:(const struct TString *)arg1; 不幸的是,
如何从Path创建TFENode?

编辑:

我有点儿,TGlobalWindowController中有一个方法:

struct TString {
    struct TRef<const __CFString *,TRetainReleasePolicy<CFStringRef>> fString;
};

...

+ (struct TFENode)nodeForUrl:(const struct TString *)arg1;

不幸的是,我无法创建TString.

EDIT2:
经过研究,我发现这种方法有效:

struct TString {
//struct TRef<CFStringRef,TRetainReleasePolicy<CFStringRef>> fString;
CFStringRef fString;
};

NSString *path = [[NSString alloc] initWithString:@"file:///"];
struct TString *tstr = (struct TString *)malloc(sizeof(struct TString*));
tstr->fString = (CFStringRef)path;
id node = [NSClassFromString(@"TGlobalWindowController") performSelector:NSSelectorFromString(@"nodeForUrl:") withObject:(id)tstr];
free(tstr);
[path release];

节点是正确的,但是一旦下一个垃圾收集过程开始,查找程序就会崩溃.

解决方法

找到答案:

+ (char*) nodeForPath:(NSURL*)url node:(char*) node
{
    memset(node,0x204);

    int *v6;
    void* v7;

    if ( (double)NSAppKitVersionNumber < 1110.0 )
    {
        v6 = (int *)[url absoluteString];
    }
    else
    {
        v7 = [url absoluteString];
        v6 = (int *)&v7;
    }
    objc_msgSend_stret((id)node,NSClassFromString(@"TGlobalWindowController"),NSSelectorFromString(@"nodeForUrl:"),v6);
    return node;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读