我在OSX中用繪圖程序定製了一個控件。此控件的每個實例都使用相同的圖像。將NSImage初始化爲靜態對象
我不知道是否將這些圖像實例化爲可用於該類創建的所有實例的靜態對象是一個好主意。
如果這是一個好主意,我該如何以切肉刀的方式實現圖像加載器? 我想添加到我的課像
static NSImage *imageone;
static NSImage *imagetwo;
static NSImage *imagethree;
但我不知道的更好的方法來初始化圖片...也許這樣的單功能?
+ (void)setupSharedImages {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
imageone = [NSimage imageNamed:@"...."];
imagetwo = [NSimage imageNamed:@"...."];
image three = [NSimage imageNamed:@"...."];
});
}
爲什麼呢? 'imageNamed:'已經處理緩存爲你的 –
我應該在每個繪圖週期調用imageNamed。我雖然最好設置一次圖像。 – MatterGoal
我相信調用'imageNamed:'是不可擴展的,當圖像沒有被使用時,系統將能夠釋放它們在內存低的警告。同時在單個位置加載許多圖像可能需要很長時間並增加加載時間。 –