2009-11-18 2 views

ответ

14

CFMutableArray и NSMutableArray - это C- и Objective-C-эквиваленты того же типа. Они считаются парой «бесплатный мостовой» тип, что означает, что вы можете наложить CFMutableArrayRef на NSMutableArray* (и наоборот), и все будет работать. Случаи, в которых вы должны использовать один над другим, - это простота использования (вы используете C или Objective-C?) Или совместимость с API, который вы хотели бы использовать. См. Дополнительную информацию here.

1

Во время работы они идентичны. Они одинаковы, они являются бесплатными мостовыми типами - вы можете безопасно (и эффективно) отбрасывать один на другой.

Это разные типы, доступные на разных языках.

CFMutableArrayRef является интерфейсом объекта непрозрачных C NSMutableArray * является интерфейсом Objective-C

Они могут быть свободно взаимозаменяемы, и разница в декларации, что говорит один указатель на непрозрачный тип, В.С. ObjC объект.

Кроме того, вы можете (sorta - это требует немного большей реализации, чем обычно) подкласс NSMutableArray с использованием objc.

1

API-интерфейсы OSX являются многоуровневыми, существуют базовые низкоуровневые API-интерфейсы, которые самозаверяются, а затем построены более богатые API-интерфейсы, в свою очередь, используя сами API-интерфейсы самого низкого уровня.

CFMutableArray является частью структуры CoreFoundation и используется API нижнего уровня. NSMutableArray (я предполагаю, что NS означает NextStep) является частью основы Foundation и используется в API более высокого уровня, таких как AppKit или Cocoa.

Что вы должны использовать, зависит от того, где вы работаете. Если вы работаете в богатом пользовательском интерфейсе с использованием Cocoa, NSMutableArray является правильным выбором. Если вы работаете с демоном, драйвером или чем-то еще, используя CoreFoundation, используйте CFMutableArray.

К счастью, как указывалось выше, многие из этих типов CF/NS являются бесплатными мостами и поэтому вы можете использовать API-интерфейсы CoreFoundation, например, Какао без необходимости постоянного преобразования типов.

Смежные вопросы