Цель C: выпуск свойств int / float - PullRequest
4 голосов
/ 10 марта 2011

У меня проблемы с пониманием чего-либо. У меня в приложении куча свойств:

@property (nonatomic, retain) AVAudioPlayer *audioPlayer;
@property (readwrite) NSInteger buttonCount;
@property (nonatomic, retain) NSString *soundSelected;
@property (readwrite) float fadeDecrease;
@property (readwrite) float fadeDelay;

Все это, очевидно, синтезировано в моем файле .m. Тем не менее, хотя audioPlayer и soundSelected прекрасно работают в dealloc, int buttonCount выдает следующее предупреждение: "Неверный тип получателя" NSInteger " и поплавки фактически заставляют компилятор плакать: «Невозможно преобразовать в тип указателя»

Это как-то связано с тем, что они не относятся к типам объектов и / или не сохраняются? Это нормально, что они не выпущены?

Спасибо.

Ответы [ 2 ]

14 голосов
/ 10 марта 2011

NSInteger, как и float, не являются типами Objective-C и не следуют обычной модели сохранения / выпуска. Они просто примитивы. Присвоения значений свойству будет достаточно.

@property (readwrite, assign) NSInteger buttonCount;

должно быть все, что вам нужно.

NSNumber однако следует обычному циклу сохранения / выпуска, поэтому добавьте соответствующие атрибуты.

4 голосов
/ 10 марта 2011

Это как-то связано с тем, что они не относятся к типам объектов и / или не сохранены?Это нормально, что они не выпущены?

Да.Вы можете освобождать только те объекты, у которых есть счет.Примитивные типы данных, такие как int, float и NSInteger, не нужно сохранять / освобождать, поскольку они не являются указателями на другие части памяти.

Если вы хотите узнать больше об управлении памятью, попробуйте взглянуть наэта страница документации:

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html%23//apple_ref/doc/uid/10000011-SW1

...