Non devi cercare molto duro nel Riferimento al runtime Objective-C per capire come fare cose come ottenere un elenco di tutte le classi registrate, ottenere tutti i metodi per un dato classe, ecc. Da ciò è possibile generare un elenco di metodi tutti . Al runtime non interessa quali siano i metodi documentati, quindi, per scegliere i metodi non documentati, è necessario anche creare un elenco dei metodi documentati, magari scansionando i file di intestazione e quindi confrontare i due liste.
Ho visto come tutto ciò potrebbe essere utile se volessi creare uno strumento che ti avvisasse se hai usato un metodo non documentato nel tuo codice. Ma poi, se non vai a curiosare nel runtime, la possibilità di utilizzare un metodo non documentato per errore nel tuo codice è piuttosto piccola, quindi non sono sicuro che valga la pena di dare il massimo.
Since, selectors are independent from the class you're messaging, even
if my custom class defines -setOrientation: irrelevant to UIDevice,
there will be a possbility of being rejected.
Non è vietato utilizzare metodi con lo stesso nome dei metodi non documentati delle classi fornite da Apple. Quello che non puoi fare è chiamare metodi non documentati delle classi fornite da Apple. Il motivo per cui la tua app è stata rifiutata, presumibilmente, è che hai inviato -setOrientation:
a un'istanza di UIDevice
. Se invece avessi inviato quel messaggio a una classe della tua creazione, non credo che tu sia stato rifiutato. Non ho alcuna conoscenza approfondita, ma ritengo ragionevolmente certo che Apple non rilevi l'uso di metodi non documentati semplicemente elencando i selettori usati nella tua app.