2010-05-21 9 views
0

touchesBegan 메서드에서 theImageView이라는 UIImageView를 만들려고하는데 다음 touchesMoved의 새 위치로 이동할 수 있습니다. 현재 touchesMoved에서 "undeclared"오류가 발생합니다. 새 위치는 theImageView입니다.객체를 메모리에 보관하는 중 (iPhone SDK)

theImageView을이 두 가지 방법으로 메모리에 유지하려면 어떻게해야합니까?

편집 : 내가 이미지를 특정 지점을 터치 할 때마다 작성해야합니다 나는이 @interface에 에게 theImageView를 선언 할 수 없습니다입니다.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    ... 
    UIImageView *theImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]]; 
    theImageView.frame = CGRectMake(263, 228, 193, 300); 
    [theImageView retain]; 
    ... 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    ... 
    theImageView.frame = CGRectMake(300, 300, 193, 300); 
    ... 
} 

답변

6

당신이 그것을 로컬 변수 만드는 방법/함수에서 변수를 선언 (즉, 해당 기능이 내부에 존재하는 변수). 다른 메서드에서 사용할 수있게하려면 클래스의 @interface에 인스턴스 변수로 선언해야합니다.

+0

답장을 보내 주셔서 감사합니다. 죄송 합니다만, 화면의 미리 정해진 영역을 터치 할 때마다 새 UIImageView 객체를 만들려고하기 때문에이 작업을 수행 할 수 없다고 말하고자합니다. 이것은 이러한 객체를 동적으로 생성해야하므로 @interface에서 선언 할 수 없음을 의미합니다. 이것에 대해 다른 방법이 있습니까? 도와 줘서 고마워. – Chris

+0

@Chris : 당신이 왜이 일을 할 수 없다고 생각하는지 모르겠습니다. 새 객체를 가리 키도록 인스턴스 변수를 재 할당 할 수 있습니다. – Chuck

+0

또는 UIImageViews를 넣는 NSMutableArray를 보유 할 인스턴스 변수가 있어야합니다. –

관련 문제