2013-02-09 3 views
1

희망이 있습니다. 여러 개의 UIScrollView를 저장하려고 시도하는 NSMutableArray가 있습니다. 각 UIScrollView는 여러 이미지를 가지므로 궁극적 인 목표는 사용자를 허용 할 수있게하는 것입니다. 범주 (UIScrollView의 각 인스턴스)에 대해 세로로 스 와이프하고 해당 범주의 각 이미지 (UIImageView의 각 인스턴스)에 대해 가로로 스 와이프합니다. 지금은이 코드가 작동 할 때까지 1 개의 이미지로 1 개의 UIScrollView를 만들고 scrollViewManager에 추가하고 있습니다. 이것은 모든 것을 올바르게 추가하는 것처럼 보이지만,이 기능을 끝내면 게임이 종료됩니다. 내 배열이 비어 있습니다. 나는 이해하지 못한다. 내가 배열에 추가 할 때 일종의 깊은 복사를해야만 파괴되지 않습니다. 아마 내가 내일 일어날 때 나는 그것을 알아낼 것이다. 그러나 현재, 나는 모든 것을 부러워하고 싶다. 미리 감사드립니다.NSMutableArray 객체가 손실 됨

편집 : 세부 정보가 부족하여 죄송합니다. 늦게 게시했습니다. 내 프로젝트는 ARC를 사용하므로 어디서나 scrollView를 릴리스하지 않습니다. 하여있는 ScrollView를 초기화하는 코드와 배열은 여기

UIScrollView *test = (UIScrollView*) [self.scrollViewManager objectAtIndex: 0]; 

: 그리고 여기

@property (nonatomic, retain) NSMutableArray *scrollViewManager; 

내있는 ScrollView를 검색하는 데 사용하는 코드입니다 : 여기 내 헤더 파일에 scrollViewManager에 대한 선언이다

scrollViewManager = [[NSMutableArray alloc] initWithCapacity: 1]; 

     UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
     [scrollView setBackgroundColor:[UIColor blackColor]]; 
     [scrollView setCanCancelContentTouches:NO]; 
     scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
     scrollView.clipsToBounds = YES;  // default is NO, we want to restrict drawing within our scrollview 
     scrollView.scrollEnabled = YES; 
     scrollView.pagingEnabled = YES; 

     NSString *imageName = @"pic1.png";//[NSString stringWithFormat:@"pic%d.jpg", i+1]; 
     UIImage *image = [UIImage imageNamed:imageName]; 
     UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

     // setup each frame to a default height and width, it will be properly placed when we call "updateScrollList" 
     CGRect rect = imageView.frame; 
     rect.size.height = 400; 
     rect.size.width = 300; 
     imageView.frame = rect; 
     imageView.tag = 1; // tag our images for later use when we place them in serial fashion 
     [scrollView addSubview:imageView];    

     [self.scrollViewManager addObject: scrollView]; 
+0

첫 번째 줄에는'scrollViewManager'가 있습니다. 메소드 끝에'self.scrollViewManager'가 있습니다. 어느 것이 오타입니까? – sosborn

+0

scrollViewManager가 약한 속성으로 선언 되었습니까? – lnafziger

+0

게시 한 코드는 괜찮습니다. 자세한 내용을 표시해야합니다 :'scrollViewManager'의 범위는 무엇입니까? 어디에서 어떻게 선언됩니까? 위의 코드를 실행 한 후 빈'scrollViewManager'를 반환하는 호출 코드의 예는 무엇입니까? – Joel

답변

0

일부 항목이 모호합니다. 예 :

  1. ARC를 사용하고 있습니까? 그렇지 않다면 어디에서나 scrollView를 출시하겠습니까?
  2. 자동 생성 합성 기능을 사용하고 있습니까?
  3. scrollViewManager의 속성 유형 (약점, 강함 등)입니다.

속성을 정의 할 때 자동으로 ivars를 만드는 경우 iver는 scrollViewManager 대신 _scrollViewManager으로 지정해야합니다.

이 방법을 사용할 때는 self.scrollViewManager을 사용하는 것이 정확합니다.

나는 항상이 종류의 물건을 다른 방법으로 사용합니다. 나는이 같은 속성이있을 때 :

@property (nonatomic, strong) NSMutableArray* myArray; 

나는 항상 self 키워드를 사용하여 초기화 :

self.myArray = [NSMutableArray new]; 

를 그리고 수정할 때, 난 항상 생성 바르 사용

[_myArray addObject:myFineObject]; 

을 이것은 ARC가 아닌 곳에서 ARC로 이동할 때 계속 사용하고있는 것입니다. 아직가는 길인지는 모르겠지만 예상대로 작동합니다.

+0

1. ARC를 사용하고 있으므로 scrollView를 어디에서나 해제하지는 않습니다. 2. scrollViewManager를 합성합니다. - 이거? 예,이 코드 줄은 @implementation 직후에 나타납니다. 3. 속성 (비 원자력, 보유) NSMutableArray * scrollViewManager; 실례지만 실례지만 @을 생략하고 사용자에게 태그를 지정하려고하기 때문에 주석에 추가하는 방법을 모르겠습니다. –