首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSArray中的Cocoa get磁盘

NSArray中的Cocoa get磁盘
EN

Stack Overflow用户
提问于 2012-08-02 02:31:52
回答 2查看 476关注 0票数 0

您好,我正在使用DiskArbitration.framework获取磁盘列表

代码语言:javascript
复制
+(NSArray*)arrayOfDisks {
    DASessionRef session = DASessionCreate(kCFAllocatorDefault);
    if (session) {
        DARegisterDiskAppearedCallback(session, NULL, driveGo, NULL);
        DASessionScheduleWithRunLoop(session,
                                     CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
        CFRelease(session);
    }
    return nil;
}

void driveGo(DADiskRef disk, void *context) {
    NSLog(@"%s", DADiskGetBSDName(disk));
}

它记录得很好,但是我怎样才能返回数组呢?它只是循环,所以我甚至不知道如何检查它是否完成。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-02 02:35:41

您可以更改您的方法并将数组存储在私有变量中:

代码语言:javascript
复制
(void*) driveGo(DADiskRef disk, void *context) {
NSLog(@"%s", DADiskGetBSDName(disk));
self->_myArray = DADiskGetBSDName(disk);

}

票数 0
EN

Stack Overflow用户

发布于 2013-12-20 05:47:11

它只是循环,所以我甚至不知道如何检查它是不是完成了。

没有“完成”这个词。对于DiskArb当前已知的每个“磁盘”以及此后出现的每个“磁盘”,您的回调都将被调用。两者之间没有任何区别。

大多数应用程序都应该使用它,而不是反对它。让DiskArb告诉您新的“磁盘”出现、更改(DescriptionChanged)、挂载或卸载(也包括DescriptionChanged)或消失的时刻。当这些更改生效时,请保持您的信息为最新,并始终保持当前状态。

大多数应用程序不需要获取当前已装入卷集的完整且固定的快照。但是,如果出于某种原因,您可能会尝试使用getmntinfo函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11765367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档