2012-09-13 6 views
1
// This is the line which retrieves the current image on the UIView 
CGImageRef originalImage = imageView.image.CGImage; 

몇 가지 단추로 호출 할 수있는 이미지를 편집하는 데 사용하는 방법으로이를 선언합니다.전역 변수를 만들 수 있습니까?

어쨌든 항상이 변수를 전역 적으로 선언하여 UIView에로드 된 첫 번째 이미지를 항상 보유 할 수 있습니까? 그런 다음 복사 변수를 사용하여 예를 들어 모든 수정 작업을 수행 할 수 있습니다.

CGImageRef copyImage = originalImage; 

나는 헤더 파일에 선언하여 글로벌하고 내가하려고 할 때 그러나 방법 파일에 인스턴스를하고 그것이 이루어지지 한 것처럼 다른 방법으로 글로벌 변수에 액세스 시도 글로벌.

모든 조언이나 더 나은 해결책을 주시면 감사하겠습니다.

+0

헤더 파일에'@ property'를 설정 한 적이 있습니까? '@property (nonatomic, strong) CGImageRef originalImage;' – Popeye

답변

0

당신이 무엇을하려고하지만 지적 것이 무엇 완전히 명확하지 않다는 다음과 같습니다

  1. 할당

      CGImageRef copyImage = originalImage; 
    

    이미지의 복사본을 생성하지 않습니다; originalImage과 동일한 이미지를 가리키는 로컬 변수를 제공하기 만하면됩니다. copyImage을 수정하면 originalImage도 수정됩니다. 원래 안전을 유지하면서 자유롭게 수정할 수 있도록의 CGImage의 복사본을 만들려면

  2. 는 사용

     CGImageRef img1 = CGImageCreateCopy(img2); 
    
  3. 당신이 지점이 아래로 원본 이미지를 저장하려면

     -(void) viewDidLoad { 
          ... 
          self.originalImage = CGImageCreateCopy(imageView.image.CGImage); 
          ... 
         } 
    

: 당신이 장소에 당신의 CGImage (예를 들어, viewDidLoad에있어 한 직후, 단순히 클래스에 속성을 추가하고 초기화은 원래 이미지이고, 사용자는 imageView.image.CGImage을 자유롭게 수정할 수 있습니다.

dealloc 메서드에서 복사 한 이미지를 놓치지 마세요.

희망이 도움이됩니다.

+0

그러나 이것은 내가 스코프 (이전에 자바로 코딩했기 때문에 객관적인 c는 어떤 것이 다른지)에 문제가있는 데 도움이됩니다. 메소드의 copyImage가 명시된대로 originalImage에 액세스 할 수 있도록 originalImage의 전역 변수를 작성할 수 없습니다. CGImageRef의 속성을 만들려고했지만 오류가 발생합니다. 클래스 변수를 정적으로 만들어서 시도해 보았습니다.하지만이 변수는 눈살을 찌푸 려 왔고, 아무런 문제없이 해결되었습니다. – dan983

+0

전역 변수가 필요하지 않습니다. 정상적인 반원이 그렇게 할 것입니다. 속성 및 오류를 정의하기 위해 코드를 게시하십시오. – sergio

+0

나는 (오류가 아닌, 보유하고있는) @property CGImageRef originalImage; 오류 - 속성이 retain 또는 strong 인 속성은 객체 유형이어야합니다. – dan983

관련 문제