2012-09-13 86 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(nonatomic,strong)CGImageRef originalImage;' – Popeye

回答

0

這是不完全清楚你正在嘗試做的,但我想指出的是:

  1. 分配

      CGImageRef copyImage = originalImage; 
    

    不會創建圖像的副本;它只會給你一個局部變量指向與originalImage相同的圖像;如果修改copyImage,則還需要修改originalImage;

  2. ,如果你想打一個CGImage的副本,以便您能夠在保持原有安全自由地修改它,使用:

     CGImageRef img1 = CGImageCreateCopy(img2); 
    
  3. ,如果你想你的原始圖像保存爲第2點,一個簡單的屬性添加到您的類並對其進行初始化,你得在你的地方CGImage(例如,在viewDidLoad後不久:

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

self.originalImage將成爲您的原始圖像,而您將可以自由修改imageView.image.CGImage

不要忘記在dealloc方法中釋放複製的圖像。

希望這會有所幫助。

+0

這確實有幫助,但是我遇到了範圍方面的問題(我以前用Java編碼過,因此客觀的c有些不同)。我似乎無法創建originalImage的全局變量,以便方法中的copyImage可以像您所說的那樣訪問originalImage。我試圖製作一個CGImageRef的屬性,但它帶來了一個錯誤。我甚至嘗試通過使其變爲靜態來創建一個類變量,然而它看起來既是皺眉,也永遠不會解決我的問題。 – dan983

+0

你不需要一個全局變量;一個普通的班級成員會這樣做。發佈你的代碼來定義一個屬性和你得到的錯誤... – sergio

+0

我想 - @property(nonatomic,retain)CGImageRef originalImage;錯誤 - 帶有retain或strong屬性的屬性必須是對象類型。 – dan983

相關問題