Quero poder depurar estruturas C sem precisar digitar explicitamente todas as propriedades em que elas consistem.
ou seja, eu quero ser capaz de fazer algo assim:
CGPoint cgPoint = CGPointMake(0,0);
NSLog(@"%@",cgPoint);
Obviamente, o '% @' não funcionará, daí a questão.
c
objective-c
cocoa
cocoa-touch
mazniak
fonte
fonte
Respostas:
Você pode tentar isso:
Há uma série de funções fornecidas pelo UIKit que convertem as várias estruturas de CG em
NSString
s. O motivo pelo qual não funciona é porque%@
significa um objeto. ACGPoint
é uma estrutura C (e também sãoCGRect
s eCGSize
s).fonte
NSPoint
e depois chamarNSStringFromPoint
. Por exemplo:NSStringFromPoint(NSPointFromCGPoint(point))
Existem algumas funções como:
Um exemplo:
fonte
fonte
Eu uso a seguinte macro para me ajudar com o NSRect:
Você poderia fazer algo semelhante ao CGPoint:
Utilizando-o da seguinte maneira:
Produziria o seguinte:
fonte
Você pode usar
NSValue
para isso. Um objeto NSValue é um contêiner simples para um único item de dados C ou Objective-C. Ele pode conter qualquer um dos tipos escalares, como int, float e char, além de ponteiros, estruturas e IDs de objetos.Exemplo:
RESULTADO :
NSPoint: {10, 30}
Espero que ajude você.
fonte
Como o RSS quebrado do Stack Overflow acabou de ressuscitar essa pergunta para mim, aqui está minha solução quase geral: JAValueToString
Isso permite que você escreva
JA_DUMP(cgPoint)
e sejacgPoint = {0, 0}
logado.fonte
Sim, você pode usar algumas funções abaixo: Primeiro, você precisa converter a estrutura do CGPoint em string, veja o exemplo
Por exemplo:
Como isso...
fonte
fonte