В любом случае все в порядке.Хотя между этими двумя подходами существует незначительная разница, в данном случае это не должно иметь практического значения.Пока вы тем или иным образом освобождаете свою собственность, у вас все будет хорошо.Словарь и центр уведомлений будут заниматься своими собственными проблемами в свое время.
РЕДАКТИРОВАТЬ: Упс, что-то пропустили.То, что я сказал вначале, по-прежнему применимо в целом: НО в первом примере, который вы называете copy
на currentObject
.Это создаст новый бит владения - который вы сразу забудете и, следовательно, вызовете утечку памяти.
Поскольку мы не видим, где вы создаете currentObject
возможно обе версии перепроизводят это тоже.Но предполагая, что вы alloc
это, вы достаточно отпускаете это.Но если вы настаиваете на вызове copy
- возможно, в этом нет необходимости, хотя вы знаете больше о том, что такое currentObject
и что может с ним произойти, - вам также нужно release
создать новую копию, например, упаковавcopy
вызовите autorelease
, например:
[[NSNotificationCenter defaultCenter] postNotificationName:@"MessageReceived" object:nil userInfo:[NSDictionary dictionaryWithObjectsAndKeys:[[currentObject copy] autorelease], @"key", nil]];
[currentObject release];
Если это неясно, прочитайте еще раз документы о владении объектом .