2012-09-27 325 views
0

我是客觀的c和xcode的新手,所以請原諒使用正確的技術術語的錯誤。全局變量

我做了一個新項目,並有一個appdelegate(.h和.m文件)。 在應用程序委託中,我有一些變量(設置)。其中一個變量是mainImage。 我把它放在appdelegate中,因爲我希望它可以從任何視圖控制器訪問。

我添加了一個名爲MainViewController(.h和.m文件)的視圖控制器。 在我的MainViewController(.m)中我有一些自定義方法。 在viewDidLoad方法我有以下代碼

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[currentImage setImage:appDelegate.mainImage]; 

問題:

在任一MainViewController,每當我想讀「mainImage」我必須做的2行以上的方法。

在.m文件中是否有一個地方可以做一次,它在該文件的所有方法中都可用?

非常感謝, Prasad。

回答

0

@Malloc和@jack ...這是相當接近我needed..nevertheless什麼,我有好幾個properties..hence我結束,包括在頭文件中的電話...

#define appDelegate ((MyAppDelegate *)[UIApplication sharedApplication].delegate) 

然後我打電話呼叫appDelegate.any_of_my_properties

從我的C#的經驗,我知道,它可能是一個不好的做法,包括在應用程序委託一個全局變量和引用它這個way..however,這一個time..I認爲它是有道理的,因爲該對象實際上並不與任何特定的視圖控制器(圖像僅僅是一個例子)相關聯..我有一些動態值持有者秒。

0

你可以在MainViewController中編寫一個方法,使用這兩行代碼返回一個UIImage類型的對象,或者任何它,然後調用它。調用將類似於[self mainImage],方法簽名將爲- (UIImage *)mainImage

0

你可以把這兩行的viewDidLoad方法你MainViewController作爲例子:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[currentImage setImage:appDelegate.mainImage]; 

這樣做了一次,然後每次需要currentImage內容的時候,你只需要調用它:

UIImage *img= [[UIImage alloc]init]; 
img = self.currentImage; 

假設currentImage在MainViewController中聲明爲屬性。