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];

        }

    }

  • 相关阅读:
    git分支管理策略
    git解决冲突
    git分支创建和合并
    git连接远程库
    git删除文件
    git撤销修改
    4k测试网站
    Windows10通过TightVNC远程连接Ubuntu18.04
    robot报告合并输出
    python 传参中的*和**
  • 原文地址:https://www.cnblogs.com/linyawen/p/2532659.html
Copyright © 2011-2022 走看看