2013-08-07 2 views
-2

코드가 맞습니까? dealloc을 수행 할 필요가 있고 릴리스해야 할 때 "super dealloc ARC가 금지합니다"라는 말은 dealloc이 아니라 release입니다 ?수퍼 dealloc을 수행 할 수 없으며 dealloc에 ​​대한 설명이 필요하며 릴리스 간의 차이점은 무엇입니까?

#import "ImageViewController.h" 

@interface ImageViewController() 
@end 
@implementation ImageViewController 
@synthesize imageToDisplay=_imageToDisplay; 

-(IBAction)click:(id)sender 
{ 
    if ([[sender title]isEqualToString:@"Dog"]) 
    { 
     [_imageToDisplay setImage:[UIImage imageNamed:@"border-collie_177061-1280x1024.jpg"]]; 
    } 
    else if ([[sender title]isEqualToString:@"FakeBook"]) 
    { 
     [_imageToDisplay setImage:[UIImage imageNamed:@"images.jpeg"]]; 
    }//else if 
}//click 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

-(void)dealloc 
{ 
    [_imageToDisplay release]; 
    [super dealloc]; 
} 


@end 
+0

여기에는 두 가지 질문이 있으며 그 중 하나는 철저히 대답되었습니다. ARC를 사용하는 경우 dealloc에서도 항목을 해제 할 필요가 없습니다. 두 번째 질문은 release와 dealloc입니다 : 'release'는 객체를 메모리에서 지우라는 명령 (메시지)입니다. 그것은 당신이 객체로 끝났고 더 이상 필요 없다는 것을 의미합니다. 'dealloc'은 객체를 해제하는 메소드입니다. [super dealloc]은 그 메소드에서 부모 (슈퍼) 클래스가 자신의 dealloc 메소드를 실행하도록 지시하는 데 사용됩니다. – leanne

답변

0

[super dealloc]release는 ARC를 사용하는 경우 허용되지 않습니다. ARC의 목표는 자동으로이를 관리하여 걱정할 필요가 없도록하는 것입니다. 수동으로 개체를 해제하려면 ARC를 끄는 것이 좋습니다.

+0

ARC를 끄려면 어떻게합니까? – Benbo

+0

감사합니다. D : – Benbo

0

호를 사용하고 있다면 무언가를 해제하거나 해제 할 수 없습니다. dealloc에서 _imageToDisplay를 nil로 설정할 수 있습니다.

+0

고맙습니다. D – Benbo