Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Estou estudando as vídeo-aulas de desenvolvimento iOS da Universidade de Stanford. Na aula "Lecture 2 - My First iOS App", sobre uma calculadora RPN, eu notei que o professor usa a sintaxe em @synthesize:

<code>@synthesize operandStack = _operandStack;</code>

Por que ele usa "_operandStack" com underline? Uma explicação resumida que se dá, posteriormente é a seguinte:

"You've learned hot to... use "_propertyname" to choose the name @synthesize uses for its backing instance variable"

O que ele quis dizer com isso? Alguém poderia dar uma ajuda? Tenho noção de Java OO e fazem 2 semanas que estou lendo e estudando materiais de Objective-C. Mas ainda tenho algumas dúvidas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é simplesmente o padrão de uso da propriedade

Uma propriedade é apenas uma marcação para um par de métodos, no caso a propriedade operandStack apenas marca o get 'operandStack' e o set 'setOperandStack'

_operandStack seria a variável instanciada usada dentro desses métodos ... o @synthesize deve gerar um getter e setter semelhante a isso por exemplo ...

- (NSString *) operandStack: <------------ a Assinatura do método

{

return _operandStack;

}

- (void) setOperandstack:(NSString *)value <------------ a Assinatura do método

{

[value retain];

[_operandStack release]; <------------- Liberação de qualquer valor anterior na variável instanciada.

_operandStack = value; <-------------- Variável com valor sendo instanciado (não sei se existe essa palavra mas enfim ... )

}

Editado por Artur Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela explicação, Artur Felipe. Se bem que foi um pouco de grego para mim (hehehe). Um dos códigos em questão está abaixo. Eu fui fazendo o exercício com os objetos, variáveis e métodos traduzindo para o português.

Sei que o @synthesize cria os getters e setters e permite o "dot notation".

Abaixo, estão 2 códigos que fui montando. Se eu entendi direito, o uso de "_nomeDaClasse" é usado apenas para instanciar o objeto? Se eu não usasse (como venho fazendo), qual seria o problema?

No caso citado (código verde), não seria mais simples eu colocar apenas a linha:

<code>NSMutableArray *operacaoPilha = [[NSMutableArray alloc] init];</code>

e tirar o @property, @synthesize e outros?

<code>//

//  CalculadoraCerebro.m

//  Calculadora

//

#import "CalculadoraCerebro.h"

@interface CalculadoraCerebro()

@property (nonatomic, strong) NSMutableArray *operacaoPilha;

@end

@implementation CalculadoraCerebro

@synthesize operacaoPilha = _operacaoPilha;

- (NSMutableArray *)operacaoPilha

{

    if (!_operacaoPilha) { // ou "if (operacaoPilha == nil)"

        _operacaoPilha = [[NSMutableArray alloc] init];

    }

    return _operacaoPilha;

}

- (void)pressionarOperador:(double)operador;

{

    NSNumber *operadorObjeto = [NSNumber numberWithDouble:operador];

    [self.operacaoPilha addObject:operadorObjeto];

}

- (double)popOperador

{

    NSNumber *operadorObjeto = [self.operacaoPilha lastObject];

    if (operadorObjeto) [self.operacaoPilha removeLastObject];

    return [operadorObjeto doubleValue];

}

- (double)fazerOperacao:(NSString *)operacao;

{

    double result = 0;

    

    if ([operacao isEqualToString:@"+"]) {

        result = [self popOperador] + [self popOperador];

    } else if ([@"*" isEqualToString:operacao]) {

        result = [self popOperador] * [self popOperador];

    } else if ([operacao isEqualToString:@"-"]) {

        double subtracao = [self popOperador];

        result = [self popOperador] - subtracao;

    } else if ([operacao isEqualToString:@"/"]) {

        double divisao = [self popOperador];

        if (divisao) result = [self popOperador] / divisao;

    }

    

    [self pressionarOperador:result];

    

    return result;

}

@end</code>

---

<code>//

//  CalculadoraViewController.m

//  Calculadora

//

#import "CalculadoraViewController.h"

#import "CalculadoraCerebro.h"

// o método boleano sempre inicia em NO

@interface CalculadoraViewController ()

@property (nonatomic) BOOL usuarioNoMeioDaOperacao;

@property (nonatomic, strong) CalculadoraCerebro *cerebro;

@end

@implementation CalculadoraViewController

@synthesize display; // @synthesize cria getters e setters

@synthesize usuarioNoMeioDaOperacao;

@synthesize cerebro = _cerebro;

- (CalculadoraCerebro *)cerebro

{

    if (!_cerebro) _cerebro = [[CalculadoraCerebro alloc] init];

    return _cerebro;

}

- (IBAction)digitoPressionado:(UIButton *)sender

{

    NSString *digito = sender.currentTitle;

    if (self.usuarioNoMeioDaOperacao) { // na primeira vez, sempre a variável vai estar NO

        self.display.text = [self.display.text stringByAppendingString:digito];

    } else {

        self.display.text = digito;

        self.usuarioNoMeioDaOperacao = YES; // depois de digitado, o else muda o estado para YES

    }

}

- (IBAction)enterPressionado

{

    [self.cerebro pressionarOperador:[self.display.text doubleValue]];

    self.usuarioNoMeioDaOperacao = NO;

}

- (IBAction)operacaoPressionada:(id)sender

{

    if (self.usuarioNoMeioDaOperacao) {

        [self enterPressionado];

    }

    NSString *operacao = [sender currentTitle];

    double result = [self.cerebro fazerOperacao:operacao];

    self.display.text = [NSString stringWithFormat:@"%g", result];

}

@end</code>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder este tópico…

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Limpar editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.



  • Conteúdo Similar

    • Por Guilherme Viana
      Boa tarde,
      Vendo iPhone Xs 512Gbs Space Gray,;
      Modelo NACIONAL, com película traseira sem marcas de uso.
      Preço.: R$4000,00
      Aparelho em perfeito estado usado por apenas 5 meses.
      Não possui caixa e nem fone de ouvido, apenas o carregador de parece e o cabo.
       
      Entrego em mãos em São Paulo no Shopping Morumbi.
       
      Irei adicionar as fotos do aparelho mais tarde.
    • Por Camila Ramos
      Imac funcionando perfeitamente.

      Vendo por motivos de trabalho.

      Acompanha todos os acessórios originais.
       
      Segue link do mercado livre
      https://produto.mercadolivre.com.br/MLB-1339974981-imac-215-final-2015-_JM#reco_item_pos=0&reco_backend=navigation&reco_backend_type=function&reco_client=home_navigation-recommendations&reco_id=db9e5775-03af-42fa-b985-718980be22ee&c_id=/home/navigation-recommendations/element&c_element_order=1&c_uid=a3e3b01e-3bbd-476b-8c15-63dc980606cf
       
      Valor: R$ 7.500,00
      IMG_4768.HEIC
    • Por Guilherme Viana
      Boa tarde,
      Vendo iPhone 11 Pro 256Gbs Dourado, modelo norte americano, com película de vidro e capinha que imita a da Apple e uma capinha transparente.
      Preço.: R$7299,00
      Aparelho em perfeito estado.
      Possui caixa e todos os acessórios nunca usados.
      >>>FOTOS DO APARELHO<<<
       
      Irei adicionar fotos da caixa e dos acessórios mais tarde.
       
    • Por carkla
      o iPad está muito bem cuidado, com cerca de 10 meses de uso;
      Possuí garantia da Apple até 25/10/2019;
      É na cor dourado, mas parece um pouco rosegold na luz; 
      Estou vendendo pois utilizo muito pouco.
      O valor é de R$1330,00. 
      Anúncio no Mercado Livre: https://produto.mercadolivre.com.br/MLB-1313846672-ipad-2018-32gb-wi-fi-_JM?quantity=1&variation=43106764313
       
    • Por jpcampos
      Meu iPhone 7 estava  com 127,4 de 128Gb ocupados e não fiz nenhum backup das ultimas 28.000 mídias aproximadamente, e precisava  atualizar o iOS  para ultima versão, a qual necessitava de 3,15Gb de armazenamento. Ao apagar fotos para liberar espaço elas voltavam instantaneamente então fui reiniciar o aparelho e ficou travado na tela da maçã.  Forcei reinicialização até o modo de restauração aparecer,  fui no iTunes e cliquei em  atualizar, onde a Apple dizia que tentaria reinstalar o iOS sem apagar os dados deu como concluído mas ao solicitar acesso ao celular pelo PC aparecia que não podia ser estabelecido., ou seja não foi reconhecido pelo iTunes.  A senha do meu IDApple estava no dispositivo e não me recordo, e demora muito tempo para eles se quer entrarem em contato. Alguém sabe o que devo fazer?
    • Por Vinicius Maciel
      Pessoal boa noite!!
      Minha situação aqui é bem complexa, mas venho procurar uma solução. Comprei um iPhone 8 de terceiros e sem nota fiscal, o preço não era baixo era até um preço razoável para o iPhone 8. Só que quando eu vou ativar ele aparece uma mensagem: “esse iPhone não pode ser ativado, favor ligar no Apple care”, ou seja, não é um bloqueio pelo iCloud, verifiquei o imei, está limpo. Pensei em devolver o celular pra Apple, tenho quase certeza que foi roubado!! Estou perdido
    • Por Diego Froes
      Pessoal, boa tarde.
      Estou começando a desenvolver para IOS utilizando as ferramentas XCode, Visual Studio e  Unity. Contudo, como sou iniciante na área IOS gostaria de começar a usar um MacBook Pro usado.
      Mac's que estou sondando:
      Modelo: MacBook Pro; Processador: Intel i5 ou i7; Disco: SSD de 240 ou superior Memória: 8GB ou superior Fabricação: 2011 ou superior Diante do cenário de desenvolvimento de Software, qual seria uma configuração recomendável com faixa de preço entre 2k a 2.5k?
      Obs.: Moro em Belo Horizonte. 
    • Por Thiago Oliveira
      Eu estou precisando fazer algumas ligações e não queria que o recebedor registrasse meu número na bina. 
      Procurei então a opção “mostrar meu número” para desabilitar nos ajustes do telefone e não encontrei mais. Ela não aparece na opção “telefone” no meu iPhone. Faz muito tempo que usei essa feature e não sei se ela ainda existe. Ela foi excluída do iOS? 
      Estou usando um iPhone XS Max, com a última versão do iOS e operadora Claro. 
    • Por Toni Junior
      Olá galera!
      Neste video eu mostro como ativar o face id ou touch id no whatsapp criando uma segurança a mais no app.
      COMO ATIVAR O MODO DE SEGURANCA NO WHATSAPP
       
      Inscreva-se assim que disponível no programa beta do whatsapp - http://bit.ly/2AM6bB4
    • Por Just Thassy
      Olá, boa tarde
      Estou com um problema que não consigo resolver no iPad. O dono do table colocou uma senha de inicialização e não se lembra, depois de muitas tentativas o iPad ficou inativo e foi preciso tentar restaurar o sistema, eu fiz o processo de restauração pelo itunes, usando o modo de recuperação.
      Mas por algum motivo ele não entrou no modo recuperação, ao invés disso, ele aparece um aviso "iPad está Inativo - Conecte ao iTunes"
      MAS quando conecto com o iTunes, aparece esse aviso:
       
       
      O que eu devo fazer? Como restaurar de fabrica se não consigo nem pelo itunes e não consigo entrar no tablet? Preciso muito de uma ajuda!
  • Estatísticas do Fórum

    • Total de Tópicos
      48.235
    • Total de Posts
      413.560
×
×
  • Criar Novo...