2012-07-16 2 views
1

명확하기메모리 관리, 일이 내가 목표 - C의 메모리 관리에 대한 명확한 것을 얻을 필요가

tableController = [[TableViewController alloc] init]; 

을 어디를 해제하는 가장 좋은 방법은 다음과 같습니다 - (void)viewDidLoad 예를 들면 코드의 어떤 곳은 내가 할. 즉석 물체를 무엇이 다른 속성으로 만들면 어떨까요? 메모리 관리는 얼마나 너무

다음 구문은 객체의 ViewController에 대해 정확히 무엇을
@interface MyFacebooDelegate : UIViewController 
{ 
    TableViewController *tableController; 
} 
... 
@end 
@property (nonatomic, strong) TableViewController *tableController; 

:

.H

@interface AppDelegate : UIResponder <UIApplicationDelegate> 
@property (strong, nonatomic) ViewController *viewController; 
@end 

하는 .m

@implementation AppDelegate 

@synthesize window = _window; 
@synthesize viewController = _viewController; 

- (void)dealloc 
{ 
    [_window release]; 
    [_viewController release]; 
    [super dealloc]; 
} 
..... 
@end 

나는 경우, 메서드를 통해 다른 클래스로 개체를 반환하려면 autorelease이 필요합니까? t 메서드 몸체에서 처음으로 다음 수신기 쪽에서 retain? 예를 들어이 방법은 메소드 본문에 너무 수신 측에서 정확히 무엇을해야합니다 :

-(NSString *)getFriendId 
{ 
NSArray *ar = [NSArray arrayWithObjects:@"1",@"2",@"3", nil]; 
return [ar objectAtIndex:0]; 
} 

나는이 많이 알고하지만 난 정말 혼란 스러워요 당신의 도움이 필요합니다.

+0

http://stackoverflow.com/search?q = % 5Bobjective-c % 5D ++ memory + management –

답변

2

1) 가장 좋은 방법은 dealloc입니다. 다시 설정하기 전에

2) 속성은 보유 또는 릴리스를 대신합니다. 하지만 경고! 너는 계속 섞어 버린다. 여기서 ARC와 관련된 "강"을 사용합니다. 당신이 정말로 고전적인 유지/릴리스 (당신은 안된다)를 사용하고 싶다면 대신 (비 원자력, 보유)를 사용하십시오.

3) 속성이 dealloc에서 할당 해제됩니다. 여기서도 강한 것은 잘못되었습니다.

4) 예. 이상적으로 당신은해야합니다. ARC가 대단한 또 다른 이유는이 모든 것을 자동으로 처리합니다.

t1; dr : ARC를 사용하십시오. 절대 돌아 가지 않아. (하지만 여전히 수동 메모리 관리를 배우십시오)

+0

정확함, Apple의 새로운 예제는 문서에 할당/보유를 사용해야한다고 명시하더라도 강력 함을 사용합니다. 고전적인 유지/해제에서 IMO가 오도하는 것이 강합니다. – steipete

1

ARC는 모든 메모리 관리 질문에 대한 대답입니다. 강력하고 약한 속성에 매우 가져 오기 노트 외에도,

iOS 강력한 속성 : ARC하기 전에 속성 선언에서 retain과 동일하므로 강력합니다. ARC 프로젝트의 경우 retain 대신 strong을 사용합니다. C primitive 속성에 assign을 사용합니다.

iOS 대리점은 신고 된 속성으로 정의해야합니다. 아웃렛은 일반적으로 File 's Owner에서 nib 파일 (또는 iOS에서는 스토리 보드 화면)의 최상위 오브젝트까지 강력한 아웃렛을 제외하고는 약합니다. 따라서 생성하는 콘센트는 다음과 같은 이유로 기본적으로 약합니다. 콘트롤러보기 또는 창 콘트롤러 창의 하위보기와 같이 사용자가 생성하는 콘센트는 소유권을 암시하지 않는 개체 간의 임의의 참조입니다.