zoukankan      html  css  js  c++  java
  • [ios 开发笔记]:@property和成员变量

    因为看的资料比较杂,一直很迷惑这个,今天花了点时间整理一下思路

    比如下面的一些写法,不同的教程都不一样:
    self.test=abc;
    test=abc;
    [test release];
    [self.test release];
    self.test=nil;
     
    总结下:
    @property(nonatomic,retain) NSString *test;
    @synthesize test
    1,这个操作在新版的xcode等于同时声名了成员变量test,并生成其getter\setter方法。
    2,@property的retain等参数只是告诉编译器怎么生成(当初我理解成test和self.test是两个不同的指针)。
    3,self.test=abc等于使用了@synthesize生成的setter,其过程有进行内存管理,不会造成内存泄漏,而test=abc则直接更改指针指向,所以尽量使用self.来赋值。
    4,self.test=nil;等于执行了
     [test release];
    [test=nil];
     
    看一下@synthesize生成的setter是怎样工作的:

    -(void)setString:(NSString *)test {

        if (string != newString) {

            [string release];

            string = [newString retain];

        }

    }

  • 相关阅读:
    BZOJ3270: 博物馆【概率DP】【高斯消元】
    SpringCloud入门概述
    微服务的技术栈
    Markdown基础教程
    分布式架构和垂直架构
    ZooKeeper和CAP理论及一致性原则
    zookeer集群的特性
    java操作zookeeper
    Zookeeper命令使用
    Zookeeper的安装
  • 原文地址:https://www.cnblogs.com/linyawen/p/2532659.html
Copyright © 2011-2022 走看看