#import @implementation NSObject (InstanceVariableForKey) - (void *)instanceVariableForKey:(NSString *)aKey { if (aKey) { Ivar ivar = object_getInstanceVariable(self, [aKey UTF8String], NULL); if (ivar) { return (void *)((char *)self + ivar_getOffset(ivar)); } } return NULL; } @end typedef struct { char itemIsEnabled[23]; char timeString[64]; int gsmSignalStrengthRaw; int gsmSignalStrengthBars; char serviceString[100]; char serviceCrossfadeString[100]; char serviceImages[3][100]; char operatorDirectory[1024]; unsigned int serviceContentType; int wifiSignalStrengthRaw; int wifiSignalStrengthBars; unsigned int dataNetworkType; int batteryCapacity; unsigned int batteryState; char notChargingString[150]; int bluetoothBatteryCapacity; int thermalColor; unsigned int thermalSunlightMode:1; unsigned int slowActivity:1; unsigned int syncActivity:1; char activityDisplayId[256]; unsigned int bluetoothConnected:1; unsigned int displayRawGSMSignal:1; unsigned int displayRawWifiSignal:1; } SbStatusBarDataType; - (void *) instanceVariableForObject: (id)obj andKey: (NSString *)key { if (key != nil) { Ivar ivar = object_getInstanceVariable(obj, [key UTF8String], NULL); if (ivar) { return (void *)((char *)obj + ivar_getOffset(ivar)); } } return NULL; } SBStatusBarDataManager* mgr = [SBStatusBarDataManager sharedDataManager]; SbStatusBarDataType data = *(SbStatusBarDataType*)[self instanceVariableForObject: mgr andKey: @"_data"]; int signalStrength = data.wifiSignalStrengthRaw;