Gabriel Vincent Postado 14 de fevereiro de 2011 Denunciar Compartilhar Postado 14 de fevereiro de 2011 (editado) Olá a todos! Estou tendo um pouco de dificuldade e agradeceria muito a quem puder me ajudar: Eu tenho um arquivo x.h e x.m, e nesse arquivo x.h tenho um int i, que recebe valores em x.m. Tenho tb arquivos y.h e y.m. Eu gostaria de passar o int i de x.m para y.m, mas quando eu passo, int i volta a valer 0. Não sei se me fiz claro o suficiente, mas agradeço se alguém puder ajudar! Editado 14 de fevereiro de 2011 por Gabriel Vincent Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
NicholasPufal Postado 14 de fevereiro de 2011 Denunciar Compartilhar Postado 14 de fevereiro de 2011 h = header m = implementation Não sei se entendi, mas você não deveria fazer um import do teu x.h no y.h? E aí sim, definir uma propriedade (que vai ser um objeto) da tua classe que está no x.h No y.m, você implementaria esse objeto, alocaria e inicializaria ele. x.m é só a implementação da classe Você precisa criar uma instância dela no seu y.m, para assim poder trabalhar. Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Gabriel Vincent Postado 14 de fevereiro de 2011 Autor Denunciar Compartilhar Postado 14 de fevereiro de 2011 h = header m = implementation Não sei se entendi, mas você não deveria fazer um import do teu x.h no y.h? E aí sim, definir uma propriedade (que vai ser um objeto) da tua classe que está no x.h No y.m, você implementaria esse objeto, alocaria e inicializaria ele. x.m é só a implementação da classe Você precisa criar uma instância dela no seu y.m, para assim poder trabalhar. Sim, me desculpe, o título foi fail mesmo... Mas eu to usando a variavel no y.m desse jeito: //exemplo if (x.variavel == outra_variavel) comando; e em x.h eu criei um objeto assim: x *x; Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Versuri Postado 14 de fevereiro de 2011 Denunciar Compartilhar Postado 14 de fevereiro de 2011 Seu professor sabe que vc está passando os objetos entre as classes??? São roubados??? Nem vou nessa escola... Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Matheus F. Postado 14 de fevereiro de 2011 Denunciar Compartilhar Postado 14 de fevereiro de 2011 Amigo, você não foi feliz nessa. Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Gabriel Vincent Postado 14 de fevereiro de 2011 Autor Denunciar Compartilhar Postado 14 de fevereiro de 2011 Amigo, você não foi feliz nessa. Haha engraçados vocês Eu ja vi que o titulo foi fail e ja tentei me explicar. Seria mais util se vcs me ajudassem, em vez de perderem seus tempos ficando de brimks ca minha cara. E pro engraçadinho lá de cima: Eu não tenho professor seu pão com bost@, sou obrigado a aprender sozinho. Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
NicholasPufal Postado 14 de fevereiro de 2011 Denunciar Compartilhar Postado 14 de fevereiro de 2011 haha eu ri da piada... Mas voltando. Matheus, não tem como postar algum código? Só lembrando que n se trabalha com variáveis neste caso, e sim com objetos. Vou dar um exemplo para ilustrar, retirado de um curso de Stanford: CalculatorBrain.h #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { @private double operand; NSString * waitingOperation; double waitingOperand; } @property double operand; - (double)performOperation:(NSString *)operation; @end CalculatorBrain.m @implementation CalculatorBrain @synthesize operand; - (void)performWaitingOperation { if ([@"+" isEqual:waitingOperation]) { operand = waitingOperand + operand; } else if ([@"-" isEqual:waitingOperation]) { operand = waitingOperand - operand; } else if ([@"*" isEqual:waitingOperation]) { operand = waitingOperand * operand; } else if ([@"/" isEqual:waitingOperation]) { if (operand) { operand = waitingOperand / operand; } } } - (double)performOperation:(NSString *)operation { if ([operation isEqual:@"sqrt"]) { operand = sqrt(operand); } else { [self performWaitingOperation]; waitingOperation = operation; waitingOperand = operand; } return operand; } @end CalculatorViewController.h #import <UIKit/UIKit.h> #import "CalculatorBrain.h" @interface CalculatorViewController : UIViewController { IBOutlet UILabel * display; CalculatorBrain * brain; BOOL userIsInTheMiddleOfTypingANumber; } - (IBAction)digitPressed:(UIButton *)sender; - (IBAction)operationPressed:(UIButton *)sender; @end CalculatorViewController.m #import "CalculatorViewController.h" @interface CalculatorViewController() @property (readonly) CalculatorBrain * brain; @end @implementation CalculatorViewController //lazy instantiation pattern - (CalculatorBrain *)brain { if (!brain) { brain = [[CalculatorBrain alloc] init]; } return brain; } ... - (IBAction)operationPressed:(UIButton *)sender { if (userIsInTheMiddleOfTypingANumber) { [self brain].operand = [[display text] doubleValue]; userIsInTheMiddleOfTypingANumber = NO; } NSString *operation = [[sender titleLabel] text]; double result = [[self brain] performOperation:operation]; [display setText:[NSString stringWithFormat:@"%g", result]]; } @end Repara como ele faz para instanciar a classe CalculatorBrain dentro do view controller. Eu sei que o que vc quer não é exatamente isso, mas pelo que entendi pelo teu pseudo-código, precisa fazer um caminho similar antes de qualquer coisa. Acho que o exemplo ilustra bem como se trabalha nestes casos, onde existe a interface/implementation de algo, e se quer instanciar ela em outra classe (um controller no caso). Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Versuri Postado 14 de fevereiro de 2011 Denunciar Compartilhar Postado 14 de fevereiro de 2011 Haha engraçados vocês Eu ja vi que o titulo foi fail e ja tentei me explicar. Seria mais util se vcs me ajudassem, em vez de perderem seus tempos ficando de brimks ca minha cara. E pro engraçadinho lá de cima: Eu não tenho professor seu pão com bost@, sou obrigado a aprender sozinho. Retiro a brincadeira (moderadores podem apagar), mas não sou pão com bost@ como vc mencionou. Nota: Se está tentando aprender "sozinho" por que está pedindo ajuda para os outros aqui no fórum??? Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Gabriel Vincent Postado 14 de fevereiro de 2011 Autor Denunciar Compartilhar Postado 14 de fevereiro de 2011 Retiro a brincadeira (moderadores podem apagar), mas não sou pão com bost@ como vc mencionou. Nota: Se está tentando aprender "sozinho" por que está pedindo ajuda para os outros aqui no fórum??? Dãã, quando digo que to aprendendo sozinho quero dizer que não faço aula. Aprender sozinho é persquisar por conta propria na internet. haha eu ri da piada... Mas voltando. Matheus, não tem como postar algum código? Só lembrando que n se trabalha com variáveis neste caso, e sim com objetos. Vou dar um exemplo para ilustrar, retirado de um curso de Stanford: CalculatorBrain.h #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { @private double operand; NSString * waitingOperation; double waitingOperand; } @property double operand; - (double)performOperation:(NSString *)operation; @end CalculatorBrain.m @implementation CalculatorBrain @synthesize operand; - (void)performWaitingOperation { if ([@"+" isEqual:waitingOperation]) { operand = waitingOperand + operand; } else if ([@"-" isEqual:waitingOperation]) { operand = waitingOperand - operand; } else if ([@"*" isEqual:waitingOperation]) { operand = waitingOperand * operand; } else if ([@"/" isEqual:waitingOperation]) { if (operand) { operand = waitingOperand / operand; } } } - (double)performOperation:(NSString *)operation { if ([operation isEqual:@"sqrt"]) { operand = sqrt(operand); } else { [self performWaitingOperation]; waitingOperation = operation; waitingOperand = operand; } return operand; } @end CalculatorViewController.h #import <UIKit/UIKit.h> #import "CalculatorBrain.h" @interface CalculatorViewController : UIViewController { IBOutlet UILabel * display; CalculatorBrain * brain; BOOL userIsInTheMiddleOfTypingANumber; } - (IBAction)digitPressed:(UIButton *)sender; - (IBAction)operationPressed:(UIButton *)sender; @end CalculatorViewController.m #import "CalculatorViewController.h" @interface CalculatorViewController() @property (readonly) CalculatorBrain * brain; @end @implementation CalculatorViewController //lazy instantiation pattern - (CalculatorBrain *)brain { if (!brain) { brain = [[CalculatorBrain alloc] init]; } return brain; } ... - (IBAction)operationPressed:(UIButton *)sender { if (userIsInTheMiddleOfTypingANumber) { [self brain].operand = [[display text] doubleValue]; userIsInTheMiddleOfTypingANumber = NO; } NSString *operation = [[sender titleLabel] text]; double result = [[self brain] performOperation:operation]; [display setText:[NSString stringWithFormat:@"%g", result]]; } @end Repara como ele faz para instanciar a classe CalculatorBrain dentro do view controller. Eu sei que o que vc quer não é exatamente isso, mas pelo que entendi pelo teu pseudo-código, precisa fazer um caminho similar antes de qualquer coisa. Acho que o exemplo ilustra bem como se trabalha nestes casos, onde existe a interface/implementation de algo, e se quer instanciar ela em outra classe (um controller no caso). Opa, acho que eu entendi! Bou testar no código depois! Vlw pela ajuda, cara! =D Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Matheus F. Postado 14 de fevereiro de 2011 Denunciar Compartilhar Postado 14 de fevereiro de 2011 (editado) Querido amigo educadíssimo Gabriel: Eu me dirigi ao Versuri, e não a você. Em nenhum momento eu brinquei com a sua cara. Infelizmente não tenho como te ajudar, pois não programo, e não sei absolutamente nada sobre o assunto. Peço desculpas se lhe ofendi em algum momento. E Versuri, também não procurei lhe ofender em nenhum momento Editado 14 de fevereiro de 2011 por Matheus F. Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Gabriel Vincent Postado 14 de fevereiro de 2011 Autor Denunciar Compartilhar Postado 14 de fevereiro de 2011 Querido amigo educadíssimo Gabriel: Eu me dirigi ao Versuri, e não a você. Em nenhum momento eu brinquei com a sua cara. Infelizmente não tenho como te ajudar, pois não programo, e não sei absolutamente nada sobre o assunto. Peço desculpas se lhe ofendi em algum momento. E Versuri, também não procurei lhe ofender em nenhum momento Nesse caso peço desculpas por ter te ofendido tb Nem to mais entendendo o que tá acontecendo =/ Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Matheus F. Postado 14 de fevereiro de 2011 Denunciar Compartilhar Postado 14 de fevereiro de 2011 Eu nunca lembro de quotar. Tenho que pegar esse hábito Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Versuri Postado 14 de fevereiro de 2011 Denunciar Compartilhar Postado 14 de fevereiro de 2011 Querido amigo Gabriel (aká o educado): Eu me dirigi ao Versuri, e não a você. Em nenhum momento eu brinquei com a sua cara. Infelizmente não tenho como te ajudar, pois não programo, e não sei absolutamente nada sobre o assunto. Peço desculpas se lhe ofendi em algum momento. E Versuri, também não procurei lhe ofender em nenhum momento Eu admito que brinquei pois não entendo nada de programação, se eu entendesse eu até ajudaria, nem senti ofensa sua, só não gostei do pão de bost@ que o outro amigo disse, acho que não precisava de tudo isso. Peço desculpas a todos pelo comentário. Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
franzSilva Postado 15 de fevereiro de 2011 Denunciar Compartilhar Postado 15 de fevereiro de 2011 Gabriel Vincent o exemplo do NicholasPufal é muito bom e de um fonte que vale a pena você dar uma olhada. Mas, uma pequena dica: procure entender o conceito de orientação a objeto antes de meter a mão na massa. Vai ajudar e muito. Sei que muitos adoram sentar e começar a digitar, mas ter os conceitos e saber aplicá-los é o que faz o verdadeiro desenvolvedor. Do resto, boa sorte. Tenho certeza que a galera vai sempre ajudar aqui no que precisar. Aprendendo juntos. Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento…
Posts Recomendados
Participe do debate
Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.