gpt4 book ai didi

macos - iCloud:获取 OS X 上云中存在的 txt 文件数组

转载 作者:行者123 更新时间:2023-12-03 16:58:42 29 4
gpt4 key购买 nike

我正在尝试按照 Apple 的建议使用 NSMetadataQuery 在应用程序的 iCloud 文件夹中获取 txt 文件数组:

NSMetadataQuery *query = [[NSMetadataQuery alloc] init];
[query setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];

NSPredicate *pred = [NSPredicate predicateWithFormat:@"%K ENDSWITH '.txt'", NSMetadataItemFSNameKey];
[query setPredicate:pred];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinishGathering:) name:NSMetadataQueryDidFinishGatheringNotification object:query];

[query startQuery];

不幸的是queryDidFinishGathering:永远不会被调用。我做错了什么?

谢谢!

最佳答案

您正在使用 ARC,这意味着您需要保留对您分配的对象的强引用,否则它们将消失。

您正在对 query 对象调用 alloc,这在手动保留/释放下意味着 query 对象将保持事件状态,直到您向其发送 releaseautorelease 消息。

但是,在 ARC 下,编译器会为您插入这些调用,并且因为它不知道您希望 query 对象保留下来,所以它会释放 query调用[query startQuery]后的对象。因为该对象已被释放,所以它永远不会发布通知。

您应该保留对 query 对象的强引用。最直接的方法是使其成为实例变量或 strong 属性。

@interface YourObject : NSObject
{
NSMetadataQuery *query;
}
@end

@interface YourObject : NSObject{}
@property (strong) NSMetadataQuery *query;
@end

关于macos - iCloud:获取 OS X 上云中存在的 txt 文件数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9746989/

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