CFMutableDictionaryRef からいくつかの値にアクセスし、それらに対していくつかの計算を行いたいと思います。以下のコードを使用して、バッテリーのいくつかのプロパティを出力できました。単一の値を出力することもできます (ただし、そうすると警告が表示されます: 無効なレシーバーの種類: CFMutableDictionaryRef )。
次に、文字列値を NSNumber に変換しようとすると、プログラムのバグが発生します。インスタンス0x5d65f70に送信された認識されないセレクターのようなものを私に与えます
CFMutableDictionaryRef matching , properties = NULL;
io_registry_entry_t entry = 0;
matching = IOServiceMatching( "IOPMPowerSource" );
//matching = IOServiceNameMatching( "AppleSmartBattery" );
entry = IOServiceGetMatchingService( kIOMasterPortDefault , matching );
IORegistryEntryCreateCFProperties( entry , &properties , NULL , 0 );
NSLog( @"%@" , properties );
NSString * voltage = [properties objectForKey:@"Voltage"];
NSString * currentCapacity = [properties objectForKey:@"CurrentCapacity"];
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [f numberFromString:voltage];
[f release];
CFRelease( properties );
IOObjectRelease( entry );