Skip to content

Instantly share code, notes, and snippets.

@githubutilities
Last active March 2, 2023 06:22
Show Gist options
  • Save githubutilities/dfa762a11e1064bfce5f to your computer and use it in GitHub Desktop.
Save githubutilities/dfa762a11e1064bfce5f to your computer and use it in GitHub Desktop.

Revisions

  1. githubutilities revised this gist Sep 1, 2015. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions iOS-private-framework.md
    Original file line number Diff line number Diff line change
    @@ -20,6 +20,7 @@ Private framework is for apple use only, and usage of private framework may caus
    * [How to correctly configure building private OS X frameworks](http://jaanus.com/how-to-correcty-configure-building-private-slash-embeddable-os-x-frameworks/)
    * [Using the UIAutomation Private Framework](http://blog.thepete.net/blog/2012/07/11/using-the-uiautomation-private-framework/)
    * [Bluetooth hen you have used a private API in iOS](http://mihyaeru21.hatenablog.com/entry/2013/02/15/160411)
    * [iOS otool to detect private apis](http://stackoverflow.com/questions/15074043/ios-otool-to-detect-private-apis)


    # How to use it
  2. githubutilities revised this gist Sep 1, 2015. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions iOS-private-framework.md
    Original file line number Diff line number Diff line change
    @@ -38,6 +38,7 @@ Private framework is for apple use only, and usage of private framework may caus
    ## Calling instance method
    ```objective-c
    // please read UIAutocorrectInlinePrompt.h at https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UIAutocorrectInlinePrompt.h
    //============Calling instance method============//
    //============UIAutocorrectInlinePrompt============//
    Class UIAutocorrectInlinePrompt = NSClassFromString(@"UIAutocorrectInlinePrompt");
  3. githubutilities revised this gist Sep 1, 2015. 1 changed file with 46 additions and 0 deletions.
    46 changes: 46 additions & 0 deletions iOS-private-framework.md
    Original file line number Diff line number Diff line change
    @@ -20,3 +20,49 @@ Private framework is for apple use only, and usage of private framework may caus
    * [How to correctly configure building private OS X frameworks](http://jaanus.com/how-to-correcty-configure-building-private-slash-embeddable-os-x-frameworks/)
    * [Using the UIAutomation Private Framework](http://blog.thepete.net/blog/2012/07/11/using-the-uiautomation-private-framework/)
    * [Bluetooth hen you have used a private API in iOS](http://mihyaeru21.hatenablog.com/entry/2013/02/15/160411)


    # How to use it

    ## Calling class method

    ```objective-c
    //============Calling class method============//
    Class MFMailComposeViewController = (NSClassFromString(@"MFMailComposeViewController"));

    if ([MFMailComposeViewController canSendMail] == YES) {
    NSLog(@"can send mail");
    }
    ```
    ## Calling instance method
    ```objective-c
    //============Calling instance method============//
    //============UIAutocorrectInlinePrompt============//
    Class UIAutocorrectInlinePrompt = NSClassFromString(@"UIAutocorrectInlinePrompt");
    id obj = [[UIAutocorrectInlinePrompt alloc] init];
    /**
    * using NSObject's performSelector:withObject method
    */
    if ([obj respondsToSelector:@selector(setFrame:)]) {
    // wrap CGRect with object, performSelector:withObject: require object
    NSValue *value = [NSValue valueWithCGRect:CGRectMake(0, 0, 100, 100)];
    [obj performSelector:@selector(setFrame:) withObject:value];
    }
    /**
    * using NSInvocation to support limitless argument
    */
    SEL setFrameSelector = @selector(setFrame:);
    if ([obj respondsToSelector:setFrameSelector]) {
    CGRect rect = CGRectMake(0, 0, 200, 200);
    NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[obj methodSignatureForSelector:setFrameSelector]];
    [inv setSelector:setFrameSelector];
    [inv setTarget:obj];
    [inv setArgument:&rect atIndex:2]; //arguments 0 and 1 are self and _cmd respectively, automatically set by NSInvocation
    [inv invoke];
    }
    ```
  4. githubutilities revised this gist Aug 31, 2015. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions iOS-private-framework.md
    Original file line number Diff line number Diff line change
    @@ -19,3 +19,4 @@ Private framework is for apple use only, and usage of private framework may caus
    * [iOS/OS X TIMELINE](http://vladalexa.com/iosx/)
    * [How to correctly configure building private OS X frameworks](http://jaanus.com/how-to-correcty-configure-building-private-slash-embeddable-os-x-frameworks/)
    * [Using the UIAutomation Private Framework](http://blog.thepete.net/blog/2012/07/11/using-the-uiautomation-private-framework/)
    * [Bluetooth hen you have used a private API in iOS](http://mihyaeru21.hatenablog.com/entry/2013/02/15/160411)
  5. githubutilities revised this gist Aug 31, 2015. 1 changed file with 8 additions and 0 deletions.
    8 changes: 8 additions & 0 deletions iOS-private-framework.md
    Original file line number Diff line number Diff line change
    @@ -8,6 +8,14 @@ Private framework is for apple use only, and usage of private framework may caus
    * [kennytm/iphone-private-frameworks](https://github.com/kennytm/iphone-private-frameworks/)


    ---

    * [/System/Library/Frameworks by theiphonewiki](https://www.theiphonewiki.com/wiki//System/Library/Frameworks)
    * [PrivateFrameworks by iphonedevwiki](http://iphonedevwiki.net/index.php/PrivateFrameworks)
    * [ios-private-frameworks on stackoverflow](http://stackoverflow.com/questions/9171160/ios-private-frameworks)

    ---

    * [iOS/OS X TIMELINE](http://vladalexa.com/iosx/)
    * [How to correctly configure building private OS X frameworks](http://jaanus.com/how-to-correcty-configure-building-private-slash-embeddable-os-x-frameworks/)
    * [Using the UIAutomation Private Framework](http://blog.thepete.net/blog/2012/07/11/using-the-uiautomation-private-framework/)
  6. githubutilities revised this gist Aug 29, 2015. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions iOS-private-framework.md
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,7 @@
    # iOS private framework

    Private framework is for apple use only, and usage of private framework may cause rejection of app submission. You can use [`class-dump`](http://stevenygard.com/projects/class-dump/) to get method signatures but you can not get any constants or C functions.

    * [nst/iOS-Runtime-Headers](https://github.com/nst/iOS-Runtime-Headers)
    * [nst/RuntimeBrowser](https://github.com/nst/RuntimeBrowser/)
    * [Cykey/ios-reversed-headers](https://github.com/Cykey/ios-reversed-headers)
    @@ -8,3 +10,4 @@

    * [/System/Library/Frameworks by theiphonewiki](https://www.theiphonewiki.com/wiki//System/Library/Frameworks)
    * [PrivateFrameworks by iphonedevwiki](http://iphonedevwiki.net/index.php/PrivateFrameworks)
    * [ios-private-frameworks on stackoverflow](http://stackoverflow.com/questions/9171160/ios-private-frameworks)
  7. githubutilities revised this gist Aug 29, 2015. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions iOS-private-framework.md
    Original file line number Diff line number Diff line change
    @@ -5,3 +5,6 @@
    * [Cykey/ios-reversed-headers](https://github.com/Cykey/ios-reversed-headers)
    * [kennytm/iphone-private-frameworks](https://github.com/kennytm/iphone-private-frameworks/)


    * [/System/Library/Frameworks by theiphonewiki](https://www.theiphonewiki.com/wiki//System/Library/Frameworks)
    * [PrivateFrameworks by iphonedevwiki](http://iphonedevwiki.net/index.php/PrivateFrameworks)
  8. githubutilities created this gist Aug 29, 2015.
    7 changes: 7 additions & 0 deletions iOS-private-framework.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    # iOS private framework

    * [nst/iOS-Runtime-Headers](https://github.com/nst/iOS-Runtime-Headers)
    * [nst/RuntimeBrowser](https://github.com/nst/RuntimeBrowser/)
    * [Cykey/ios-reversed-headers](https://github.com/Cykey/ios-reversed-headers)
    * [kennytm/iphone-private-frameworks](https://github.com/kennytm/iphone-private-frameworks/)