(E giusto per contraddire qualche âsapientoneâ convinto che winterboard âduplichi gli indirizzi di memoriaâ (frase senza senso tra lâaltro)⌠e sempre pronto a cancellare i commenti fatti che contraddicono il suo immenso sapere :D)
Vi riporto anche uno spezzone di una mail di saurik
Mobile Substrate is pretty much mach_inject (although people who have used
both claim that my interface is better/simpler) for the iPhone. You make a
.dylib, configure what processes you want it injected into (you can also
just say âall processesâ), and drop it (and the trivial .plist configuration
for it) into /Library/MobileSubstrate/DynamicLibraries. It has been used for
everything from letting you put five icons on your dock to rewriting half of
the voicemail application to placing little thumbnails of peoplesâ contacts
to the left of their names in the Phone application. Pretty much all of the
sponsoring applications are using it for something. In essence, it is the
(very small, very simple) cornerstone of jailbreak software technology.
quindi winterboard âciucciaâ meno memoria di quanto dicano loro?
in effetti anche a me sembrava stranoâŚcon free memory ed altri tool, non ho visto molta differenza tra il tema di default ed uno messo con winterboard (non un tema leggerissimoâŚicone, wallpaper, dock, lockscreen e sliders)âŚgiusto 1 o 2 mb in piĂš di utilizzo
siamo otâŚquesto è un topic in dev center sullâhooking, non sul risparmio della memoria
Ad ogni modo una volta per tutte:
SpringBoard: -> servizio com.apple.SpringBoard (/System/Library/CoreServices/SpringBoard.app/SpringBoard) (pensiamolo come explorer.exe su win) occupa memoria, nessuno ci può fare nulla.
Mobilesubstrate: è una libreria che permette lâhooking di variabili e metodi -> occupa memoria (pochi kb, impercettibile)
Winterboard: Hooka alcune funzioni relative alla spring modificandole (utilizzando mobilesubstrate) e le funzioni che sono modificate vengono riscritte -> nuovo codice in memoria.
Ad esempio
MSHook(UIImage *, UIImage$defaultDesktopImage, UIImage *self, SEL sel) {
if (Debug_)
NSLog(@âWB:Debug:DefaultDesktopImageâ);
if (NSString *path = $getTheme$([NSArray arrayWithObjects:@âLockBackground.pngâ, @âLockBackground.jpgâ, nil]))
return [UIImage imageWithContentsOfFile:path];
return _UIImage$defaultDesktopImage(self, sel);
}
[fonte]
Codice in blu: Simbolo della funzione originale, chiamerĂ la vecchia funzione nativa -> stesso spazio di prima
Codice in rosso: codice aggiunto -> occuperĂ NUOVO spazio in memoria (pochi kb, impercettibile)
Se poi il nuovo codice fa in modo che vengano visualizzate nuove immagini (o diverse dalla precedenti) come in questo caso per forze di cose di occupa altro spazio in memoriaâŚ
E se il backgound nero pesa 5kb e uno ne carica uno elaborato da 200kb per forza la memoria libera è meno di quella originale, oppure se vengono caricate pagine html con effetti in javascript⌠certo pesano piÚ di uno sfondo nero
Facciamo un gioco.
decomprimente lo zip e trasferite i due file âcountdown.dylibâ e âcountdown.plistâ sotto â/Library/MobileSubstrate/DynamicLibraries/â e poi respringate.
per pulire il badge di safari basta un respring, comunque in generale ho fatto questa lib badgeclear.
metti i due file .dylib e .plist sempre sotto /Library/MobileSubstrate/DynamicLibraries/ e respringa.
Ad ogni avvio di qualsiasi app verrĂ pulito il badge (quindi serve anche per pulire tipo lâAppstore, cydia etcâŚ). Quando non ti serve piu cancellala