Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 615
ninjaneer Avatar asked Nov 14 '12 20:11

ninjaneer


Video Answer


1 Answers

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.

like image 150
Joe Avatar answered Nov 06 '22 01:11

Joe