iPhone App2011. 10. 6. 15:41
아이폰 개발은 메모리가 한정되어 있어서 메모리를 항상 관리 하지 않으면 안된다.

아 ~ 그리운 C# ㅠ.ㅠ 가비지 컬렉터 ㅠㅠ

간단한 습관 정리 하자면

1. dealloc는 항상 @synthesize 아래에 놓자.
   @synthesize commentDataArray,commentTableView,loadingFooterIndicator,emptyCommentLabel;


- (void)dealloc { 

    [commentDataArray release];

    [indicator release];

    [commentTableView release];

    [loadingFooterIndicator release];

    

    [_refreshHeaderView release];

    [myAlert release];

    [emptyCommentLabel release];

    [super dealloc];

}

이렇게 놓는다면 비교하기도 쉽고 해제 안한것도 발견하기 쉽다.

2. viewdidload와 viewdidunload는 항상 같이 붙어서 쓸자

-(void) viewDidLoad

[super viewDidLoad];

    

[[ReloadManager sharedSingletonClass] setIsRecentPostReload:YES];


    [self.view addSubview:indicator];

    

    self.loadingFooterIndicator = [[[LoadingFooterIndicator alloc] init] autorelease];

    

    //pull to refresh

    if (_refreshHeaderView == nil) {

        _refreshHeaderView = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - commentTableView.bounds.size.height, commentTableView.frame.size.width, commentTableView.bounds.size.height)];

_refreshHeaderView.delegate = self;

[commentTableView addSubview:_refreshHeaderView];

}    

}


- (void)viewDidUnload {        

[super viewDidUnload]; 

    self.commentDataArray = nil;    

    self.loadingFooterIndicator = nil;    

    self.commentTableView = nil;    

    [_refreshHeaderView release];

    _refreshHeaderView = nil;    

    [indicator release];

    indicator = nil;

    self.emptyCommentLabel = nil;

}


위처럼 붙여서 쓴다면 didload에서 사용한 프로퍼티나 변수를 보기 쉽고 릴리즈를 할수 있다.

  
3 viewdidload에서 사용한것은 항상 did unload에서 relase와 nil로 정해줄것
   위에 보면 알겠지만 프로퍼티로 정의해둔것은 viewDidUnload할때  nil처리하면 알아서 relase되지만
   프로퍼티가 아닌 그냥 전역 변수는
       
[indicator release];

    indicator = nil;

  이렇게 한번 release해주고 nil처리 해줘야 한다.
 


4. IBOulet는 프로퍼티로도 만들자.
   xcode4에서는 워닝이 안나지만 xcode3는 워닝이 난다.


 

 

 

 




 
Posted by 동동(이재동)