Existe um método que eu possa substituir em minhas classes personalizadas para que, quando
NSLog(@"%@", myObject)
é chamado, ele imprimirá os campos (ou o que eu julgar importante) do meu objeto? Acho que estou procurando o equivalente em Objective-C do Java toString()
.
objective-c
tostring
nslog
George Armhold
fonte
fonte
description
propriedade é reservada ... e fornecerá informações úteis sobre depuração! Nesse caso, você precisará criar seu próprio nome de método exclusivo.debugDescription
Também é reservado? Embora euDebugDescription
deva ser usado por um depurador como o LLDB.Adicione isso à
@implementation
sua classe Photo:fonte
Você pode substituir o método de descrição do NSObject:
Sobre o assunto do registro, eu recomendo este post do blog para um melhor registro no Objective-C.
fonte
Existem duas funções que você pode usar.
Isso será exibido quando você colocar seu objeto como, por exemplo, um parâmetro para
NSLog
. A outra função de descrição é:Isso será chamado quando você fizer
po anInstanceOfYourClass
na janela de comando debug. Se sua classe não tem umadebugDescription
função, bastadescription
será chamada.Observe que a classe base
NSObject
foidescription
implementada, mas é bastante simples: exibe apenas o endereço do objeto. É por isso que recomendo que você implementedescription
em qualquer classe da qual deseja obter informações, principalmente se você usar odescription
método no seu código. Se você usadescription
seu código, sugiro que você implementedebugDescription
também, tornando tambémdebugDescription
mais detalhado.fonte
Isso produzirá as vozes disponíveis:
fonte