Search code examples
iphoneobjective-ciosprivate-functions

Using Private Framework: Importing RadioPreferences.h


I'm following the selected answer importing private frameworks in Xcode

Basically I want to be able to control Airplane mode in my app. When I import RadioPreferences.h into my app and try to compile, I'm getting Expected Identifier for @class <RadiosPreferencesDelegate>;

I'm not exactly sure what to do next. I didn't even know you can forward declare protocols.


Solution

  • First copy the following contents into a file named RadioPreferences.h. (Taken from https://stackoverflow.com/a/13095362/418715 ).

    @protocol RadiosPreferencesDelegate
    -(void)airplaneModeChanged;
    @end
    
    
    @interface RadiosPreferences : NSObject
    {
        struct __SCPreferences *_prefs;
        int _applySkipCount;
        id <RadiosPreferencesDelegate> _delegate;
        BOOL _isCachedAirplaneModeValid;
        BOOL _cachedAirplaneMode;
        BOOL notifyForExternalChangeOnly;
    }
    
    - (id)init;
    - (void)dealloc;
    @property(nonatomic) BOOL airplaneMode;
    - (void)refresh;
    - (void)initializeSCPrefs:(id)arg1;
    - (void)notifyTarget:(unsigned int)arg1;
    - (void)synchronize;
    - (void *)getValueForKey:(id)arg1;
    - (void)setValue:(void *)arg1 forKey:(id)arg2;
    @property(nonatomic) BOOL notifyForExternalChangeOnly; // @synthesize notifyForExternalChangeOnly;
    @property(nonatomic) id <RadiosPreferencesDelegate> delegate; // @synthesize delegate=_delegate;
    
    @end
    

    • Next, go to the Build Phases of your target in Xcode and expand the Link Binary With Libraries section.
    • In a finder window navigate to /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/PrivateFrameworks. Replace iPhoneOS6.0.sdk in the path with the sdk you are targeting.
    • Drag AppSupport.framework over to your expanded Link Binary With Libraries section.

    Everything should now compile and you will be able to use the class.