2010-03-22 17 views
7

Sto lavorando su un paio di prodotti mac e, per fare ciò che devo fare, sto usando alcune chiamate a metodi non documentati su Mac Classes. ComeChiamate Mac non documentate

IKImageView di

doRotate:(id) 

e

di PDFDocument

(NSPrintOperation *)getPrintOperationForPrintInfo:(NSPrintInfo *)printInfo autoRotate:(BOOL)doRotate; 

Quanto è comune per i programmatori Obiettivo C per utilizzare metodi come questo? Come fai a scoprirli (oltre a Google)? Quanto è pericoloso usarli? C'è un pericolo diverso da quello che Apple non li renderà più disponibili in qualche futuro rev, e quindi il tuo programma si romperà?

+1

Hai chiesto abbastanza domande, dovreste aver imparato come formattare loro da ora; -) –

+0

@Joachim: Sì, ho solo pensato che un elenco di nomi di funzioni non fosse codice che doveva essere formattato ... B-) –

+0

non è assolutamente necessario, ma di solito sono molto più facili da leggere, quando sono formattato. Ma forse sono solo io, quindi sentiti libero di ignorarmi. –

risposta

7

Non è del tutto inaudito, ma se li userete nel software di rilascio, è necessario essere assolutamente sicuri di avere la vostra merda insieme e testare estesamente ogni versione di OS X prima che esca - perché sì , Apple potrebbe fare qualsiasi numero di cose in una revisione futura (cambiare la firma del metodo, rimuovere il metodo, introdurre qualche bug sottile nel metodo che funziona in tutti i casi di utilizzo).

In ogni caso, se trovi che c'è qualcosa che non puoi fare con l'API esistente, devi presentare una richiesta di miglioramento con Apple in modo che sappiano che è qualcosa che devono aggiungere.

+0

Ok, l'avevo già fatto per 2 di loro ... E non ho ricevuto risposta ... Ho appena presentato un altro per il più recente che ho trovato ... –

4

Per estrarre un'interfaccia è possibile utilizzare l'utilità class-dump che offre un file di intestazione generato automaticamente di qualsiasi file MachO. Ad esempio, per trovare getPrintOperationForPrintInfo metodo che è possibile utilizzare il comando:

$ class-dump /System/Library/Frameworks/Quartz.framework/Frameworks/PDFKit.framework/PDFKit | fgrep getPrintOperationForPrintInfo 

che vi darà:

- (id)getPrintOperationForPrintInfo:(id)arg1 autoRotate:(BOOL)arg2; 
Problemi correlati