Pergunta

Eu procurei uma maneira de definir o nível de luz de fundo em um aplicativo no iPhone. Encontrei uma solução aqui:

http://www.iphonedevsdk.com/forum/29097-post3.html

O problema que tenho é que, quando adiciono isso ao meu aplicativo, recebo um erro e um aviso. Meu código é o seguinte:

#include "GraphicsServices.h"

- (void) viewWillAppear:(BOOL)animated
{

NSNumber *bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel" ), CFSTR("com.apple.springboard"));
previousBacklightLevel = [bl floatValue];
//Error here : incompatible types in assignment

[bl release];   

GSEventSetBacklightLevel(0.5f);
// Warning here : implicit declaration of function 'GSEventSetBacklightLevel'

}

//...The rest of my app

- (void)applicationWillTerminate:(UIApplication *)TheNameOfMyAppIsHere
{
    GSEventSetBacklightLevel(previousBacklightLevel);
}

Não tenho certeza do que está causando isso. Eu também não sei realmente o que precisa ser no meu arquivo .h aqui, mas eu tenho:

NSNumber *previousBacklightLevel;

Editar // alterado

NSNumber *previousBacklightLevel 

para

float previousBacklightLevel;

Conforme sugerido e isso classificou os tipos incompatíveis em erro de atribuição.

Agora deixado com:

"_Gseventsetbacklightlevel", mencionado em:

-[MyAppViewController ViewWillappear:] em MyAppViewController.o

-[MyAppViewController ApplicationWilterinate] em MyAppViewController.o

Símbolo (s) não encontrado

Collect2: LD retornou 1 status de saída

Também não tenho certeza de como consertar este!

Qualquer ajuda seria apreciada,

// editar

Todos os problemas classificados. Obrigado a todos que me ajudaram. Eu realmente aprecio isso e mal posso esperar até que eu possa devolver um pouco, respondendo a algumas perguntas.

Muito Obrigado,

Stu

Foi útil?

Solução

A razão pela qual você está recebendo um aviso é porque GSEventSetBacklightLevel() é uma API privada não declarada em nenhum dos cabeçalhos do SDK. Se você planeja enviá -lo para a loja de aplicativos, seu aplicativo será rejeitado se você ligar. Se isso for para um dispositivo jailbroken, basta declarar a função.

void GSEventSetBacklightLevel(float level);

A razão pela qual você está recebendo o erro é porque você está tentando atribuir um flutuador (que é um escalar) a um NSNumber *. Você provavelmente deseja alterar o nível anterior do BackLightle para ser um flutuador.

Outras dicas

Você pode adicionar a estrutura privada por Jus arrastar e soltar para o seu projeto Xcode de /Desenvolvedor/Platforms/iphoneos.platform/desenvolvedor/sdks/iphoneos4.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework e também importar o #import "GraphicsServices.h" Cabeçalho em seu arquivo .h

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top