Я должен все еще узнать о руководящей памяти теперь, когда Objective-C/Cocoa имеет Сборку "мусора"?

Деятельность А.

Intent x  = new Intent(A.this, B.class);
x.putExtra("CMAKE", "TOYOTA");
startActivity(intent);

Деятельность B.

String cmake=getIntent.getStringExtra("CMAKE");

Деятельность B -> Bfragment (функция перехода фрагмента)

Bfragment fragment = new Bfragment();

        Bundle args = new Bundle();
        args.putString("key", cmake);
        fragment.setArguments(args);

Фрагмент B.

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mdata = getArguments().getString("key");
    }

В намерении позвонить на фрагмент

Intent y = new Intent(getContext(),B.class);
y.putExtra("CMAKE", mdata);
    startActivity(y)
8
задан Abizern 20 December 2008 в 11:53
поделиться

6 ответов

Управление памятью все еще действительно важно для понимания. При предназначении для более старой ОС необходимо сделать управление памятью. Если Вы пользуетесь более старой библиотекой, необходимо сделать управление памятью. Если Вы выпадающий к Базовому уровню Основы, (может или не может), необходимо сделать управление памятью.

Если Вы программируете для iPhone, необходимо сделать управление памятью.

Сборщик "мусора" в Objective C является выдающимся - и если можно использовать его, совершенно определенно необходимо быть - но он просто еще не покрывает каждую ситуацию с программированием.

9
ответ дан 5 December 2019 в 08:26
поделиться

Некоторые технологии Какао, такие как Распределенные Объекты, PyObjC (мост Objective C Python) плагины и CoreImage (по крайней мере, длятся, я слышал; это, возможно, было зафиксировано), не играют хорошо со Сборкой "мусора". При использовании этих технологий необходимо будет все еще использовать традиционное управление памятью. Конечно, как другие сказали, все еще необходимо использовать традиционное управление памятью Какао (подсчет ссылок) при поддержке OS X 10.4, или iPhone в коде.

С другой стороны, новый GC может быть очень хорошим. Это не бесплатный ланч однако; все еще необходимо понять семантику системы GC, ее шаблонов и ее ограничений..., как Вы делаете с любой технологией.

Так как много thrid-партийных платформ еще не могут поддерживать GC, вероятно, лучше все еще понять систему подсчета ссылок. Если Вы следуете простым правилам для монопольного использования объекта, данного в руководстве по управлению памятью Apple, необходимо всегда быть в порядке.

3
ответ дан 5 December 2019 в 08:26
поделиться

При программировании платформы iPhone необходимо знать, сохраняют/выпускают, потому что Касание Какао не имеет GC.

Если Вы собираетесь использовать Основу Core, Графику Core, большую часть Core Services или какой-либо другой основанный на CF API, необходимо знать, сохраняют/выпускают, потому что CF-производные-объекты не являются GC'd по умолчанию (и необходимо явно произвести их для погрузки, так или иначе).

Если Вы собираетесь использовать какие-либо из API POSIX или какую-либо остальную часть Core Services, необходимо знать управление выделением/свободной памятью. Вы даже не получаете подсчет ссылок. (Исключение: Icon Services, которая также имеет подсчет ссылок. API, перенесенные от Углерода, являются путаницей.)

Так, одним словом: Да.

3
ответ дан 5 December 2019 в 08:26
поделиться

Это зависит. Если Вы - планирование игнорирования 10,4 пользователей, то Вам не, возможно, придется волноваться об этом; но Objective C 2.0 не доступен на 10,4 и ниже, таким образом, все еще необходимо волноваться об управлении памятью на тех платформах.

Тем не менее управление памятью всегда является полезным навыком, и дело не в этом трудно в Какао так или иначе, таким образом, это не плохой навык для взятия.

2
ответ дан 5 December 2019 в 08:26
поделиться

Это, вероятно, стоит узнать о понятиях, которые подкрепляют управление памятью Какао, поскольку это все еще полезно в определенных ситуациях. IPhone OS, например, не поддерживает сборку "мусора". Могут быть другие ситуации, где выгодно использовать ручное управление памятью, и полезно иметь способность сделать тот выбор

2
ответ дан 5 December 2019 в 08:26
поделиться

Понимание превосходных понятий управления памятью Какао поможет Вам с понятием управления памятью в целом. Я скопировал понятие автовыпуска в несколько проектов C++, и оно работало отлично. Apache и Подверсия являются примерами другого программного обеспечения, которое также использует автовыпуск.

Лично я нахожу, сохраняют/выпускают/автовыпускают, чтобы быть просто правильным уровнем абстракции для меня. Это не волшебно, поэтому если я действительно должен сделать что-то странное, легко сделать так. С другой стороны, правила так просты, что это становится второй натурой, до такой степени, когда Вы в конечном счете просто не думаете об управлении памятью больше, это просто работает.

Добавьте к этому то, что, как упомянуто выше, только большая часть Какао поддерживает сборку "мусора", в то время как то, что Вы пишете, является C, таким образом, любой код Вы пишете и/или используете, который не является Какао, должен будет вручную управляться. Это включает CoreAudio, CoreGraphics, и так далее.

(Да, CF возражает работе с GC, но только если Вы явно включаете его для каждого объекта, и мне было трудно изучить правила GC-CF),

Таким образом: Я никогда не использую сборщик "мусора" сам (и единственное время, которое я сделал так, это было очень болезненно, поскольку у меня были некоторый C++ и CG в соединении), и насколько я знаю, большинство кодеров Cocoa очень используется, чтобы сохранить/выпустить/автовыпустить и использовать это.

1
ответ дан 5 December 2019 в 08:26
поделиться