2013-06-20 1 views
0

я создал одно свойство NNtring fName с атрибутом сохранения и синтезировал это свойство. i инициализировал это свойство на viewDidLoad.Неправильный декремент счетчика ссылок объекта, который не принадлежит в этой точке вызывающим абонентом. Для свойства сохранения

мой реальный проблема -, я использован [self.fName выпуск]. этот образец работает нормально, но статический анализатор показывает эту строку как ошибку «Неправильный декремент подсчета ссылок объекта, который не принадлежит на данный момент вызывающим».

ссылка Код:

@interface ViewController : UIViewController 

@property(nonatomic,retain)NSString *fName; 

@end 

@implementation ViewController 
@synthesize fName; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    self.fName [email protected]"Hello"; 

    [self.fName release];//Analyzer showgin error here. 

} 
--------- 
------ 
end 

ответ

0

Там нет необходимости для выпуска там. Вы ничего не выделяете/не запускаете. Если вы делаете что-то вроде этого:

self.fName = [[NSString alloc] initWithString:@"Hello"]; 

тогда вам нужно освободить self.fName.

Как правило большого пальца номерOfReleases = numberOfAlloc.

И теперь, золотое правило, USE ARC :)

+0

, но атрибут свойства Retain. Когда мы устанавливаем сопоставление с этим свойством, оно должно увеличивать количество удержаний? это правильно? пожалуйста, уточните г-на Данапата. – Baalu

+0

Да, если вы установите новый объект, который уже alloc/init (сохраните счет как минимум 1), в свойство, которое «сохраняется», то счетчик удержания объекта увеличивается, но это не ваш случай. – danypata

+0

self.fName = [[NSString alloc] initWithString: @ "Hello"]; Я обновил это. Вы, пожалуйста, объясните, почему его не увеличивая количество удержаний в моем случае .. пожалуйста, помогите. – Baalu