我是否需要使用ARC销毁Objective-C中的信号量?

问题描述 投票:0回答:1

我正在按照这篇文章的建议开发iOS Core Audio:Core Audio render thread and thread signalling

在使用dispatch_semaphore_t的更新答案中,我理解在阅读此帖后启用ARC时我不需要调用dispatch_releaseDoes ARC support dispatch queues?

但是,在使用semaphore_t时的原始答案中(参见下面的代码片段),当启用ARC时,我无法通过调用semaphore_destroy来查找是否需要销毁信号量的参考。有人可以帮忙吗?

semaphore_t mSemaphore;

kern_return_t result = semaphore_create(mach_task_self(), &mSemaphore, SYNC_POLICY_FIFO, 0);

// Do stuff with semaphore wait and signal ...

kern_return_t result = semaphore_destroy(mach_task_self(), mSemaphore);

先感谢您!

objective-c automatic-ref-counting semaphore
1个回答
0
投票

是的,您需要手动销毁Mach信号量。 ARC不会自动管理Mach信号量。并且,通过类似于调度信号量,如果ARC确实管理它们,它将不允许使用semaphore_destroy()。如果它不允许,那么你可以而且应该使用它。

请注意,Mach信号量不是引用计数。没有保留和释放操作,只需创建和销毁。强或不安全的未参考引用之间没有区别。所有参考文献实际上都是不安全的。没有引用计数,ARC无法推断信号量对象,因为它们通过代码传递。

© www.soinside.com 2019 - 2024. All rights reserved.