Existem dois novos atributos de gerenciamento de memória para propriedades introduzidas pelo ARC stronge weak.
Além de copy, o que obviamente é algo completamente diferente, existem diferenças entre strongvs retaine weakvs assign?
Pelo meu entendimento, a única diferença aqui é que weakserá atribuída nilao ponteiro, enquanto assignnão será, o que significa que o programa falhará quando eu enviar uma mensagem ao ponteiro depois que ele for lançado. Mas se eu usar weak, isso nunca acontecerá, porque o envio de mensagens para nilnão fará nada.
Eu não sei sobre nenhuma diferença entre stronge retain.
Existe alguma razão pela qual devo usar assigne retainem novos projetos ou o tipo de depreciação?
weake strong) e 4 qualificadores vida variáveis ( __strong, __weak, __unsafe_unretained, __autoreleasing). Veja as notas do ARC abaixo.
assignao compilar com o ARC era um erro. Existem muitas respostas excluídas sobre isso. Parece que foi alterado antes do lançamento final. unsafe_unretainedé o atributo preferido para muitos de nós que adotamos cedo. Para provar que unsafe_unretainedé um atributo válido, consulte "Programação com objetivo-C" da Apple, na seção "Encapsulando dados", na sub-rubrica "Use referências não seguras e não retidas para algumas classes". O que diz: "Para uma propriedade, isso significa usar o atributo unsafe_unretained:"
strong,weakeunsafe_unretained.