--------合成存取方法--------

  • Objective-C从 OC 2.0版本开始,自动合成了setter 方法和 getter 方法。而且,如果开发者需要自己控制某个setter 方法和 getter 方法的实现时,可以自己提供 setter 方法和 getter 方法,自己提供的setter 方法和 getter 方法会覆盖系统自动合成的相应方法。
  • 需要编译器自动合成 setter 方法和 getter 方法需要在需要生成方法的属性面前加上 @property (必须)  和 @synthesize(可以省略) 指令。(例: @property int numerator;    @synthesize numerator = _numerator;  // =_numerator  可以省略)
  • 其实并不需要使用 @synthesize  指令,使用 @property 指令就足够了。编译器会自动为你生成 setter 和 getter 方法。但是,注意,如果你不使用  @synthesize 那么编译器生成的实例变量会以下划线(_)字符作为其名称的第一个字符。
  • 使用合成存取方法,属性名称的前面不要以 new 、alloc 、copy 或者 init 这些词开头。这与编译器的一些假定有关。

/*  @property 可以使用的一些指示符

1.readonly:系统只合成getter方法,不再合成setter方法。

2.readwrite:系统合成getter和setter方法,默认是这样。

3.strong:指示符指定该属性对被赋值对象持有强引用(只要该强引用指向被赋值的对象,那么该对象就不会被自动回收)。多用在 其他对象(除代理\UI控件\字符串以外的对象)

4.week:指示符指定该属性对被赋值对象持有弱引用(即使该弱引用指向被赋值的对象,该对象也可能被回收)。多用在 代理\UI控件

5.unsafe_unretained:类似于week,不同是指针所引用的对象回收之后,该指针不会被赋值为nil,该指示符极少用。

6.copy : 多用在字符串类型

7.assign : 多用在非对象类型(基本数据类型int\float\BOOL\枚举\结构体)

*/

--------局部变量和全局变量--------

  • 局部变量:在还是内部定义的变量

    • 作用域:从定义变量开始,到代码块结束
    • 生命周期:定义开始到代码块结束,就会被回收
    • 函数的形参也是局部变量
    • 无固定初值
    • 局部变量没有记忆力。方法内定义的局部变量只会在方法内有效,当方法返回时,这些变量的值都消失了。每次调用方法时,该方法内的局部变量(如果有的话)都是用变量声明重新初始化一次。(等于重新分配了一块存储数据的内存空间,以前局部变量所拥有的空间已经被回收、销毁,不会再次拥有)
  • 全局变量:函数外面定义的变量
    • 作用域:定义开始到文件结尾(能被后面所有函数共享)
    • 生命周期:程序一开始就分配内存,到程序退出才销毁
    • 默认的初值为0
    • 全局变量有自己的记忆力
  • static  关键字:
    • 在变量声明前加上 static 关键字,可以使局部变量保留多次调用一个方法所得的值。(即 存储数据的内存空间不会被回收与销毁,会记录下局部变量所拥有的数据,在下一次需要这个局部变量时将会返回唯一的存储数据的内存地址,和原有的数据)

转载于:https://www.cnblogs.com/fangjingjing/p/5866461.html

合成存储方法,局部/全局变量相关推荐

  1. 数据结构 非线性结构 树 介绍及存储方法

    所谓树, 其实跟链表有类似的地方,  就是都是由节点和指针构成的数据结构. 在链表中,  每1个节点(尾节点除外)只有1个指针指向下1个节点. 所以链表各个节点可以由一条线链接起来, 就是一种线性结构 ...

  2. c语言语法基础之——局部变量及存储类别、全局变量及存储类别、宏定义 学习

    宏定义 // 宏定义只是替身,不需要小括号,一般命名用大写字母 #define B(c) c*c main(){int m=5, n=8,k; k=10*B(m+n); // 是 10*5+8*5+8 ...

  3. 12 | 存储优化(上):常见的数据存储方法有哪些?

    通过专栏前面我讲的 I/O 优化基础知识,相信你肯定了解了文件系统和磁盘的一些机制,以及不同 I/O 方式的使用场景以及优缺点,并且可以掌握如何在线上监控 I/O 操作. 万丈高楼平地起,在理解并掌握 ...

  4. OpenCV 笔记(06)— Mat 结构、像素值存储方法、创建 Mat 对象各种方法、Mat 对象的运算

    数字图像中的每个点都称为像素(对于图像元素),并且每个像素可以存储一个或多个值,这取决于它是否是仅存储一个值的黑白图像(也称为二进制图像,比如只存储0或1),还是存储两个值的灰度图像,或者是存储三个值 ...

  5. element-ui和semantic-ui冲突的解决方法--局部引入semantic-ui的css

    element-ui和semantic-ui冲突的解决方法--局部引入semantic-ui的css 参考文章: (1)element-ui和semantic-ui冲突的解决方法--局部引入seman ...

  6. 二维教组A[12][18]采用列优先的存储方法,若每个元素各占3个存储单元,且第1个元素的地址为150,则元素A[9][7]的地址为 ( )

    二维教组A[12][18]采用列优先的存储方法,若每个元素各占3个存储单元,且第1个元素的地址为150,则元素A[9][7]的地址为 (   ) A.429 B.432 C.435 D.438 [分析 ...

  7. 数据本地存储方法封装(笔记)localStorage、sessionStorage

    数据本地存储方法封装(笔记)localStorage.sessionStorage 方法: import storage from 'good-storage'const SELLER_KEY = ' ...

  8. 整数存储方法和做题中部分数值方法

    整数存储方法 正负数的存储:简单来说就是把用来存储的所有单位(二进制数)一分为二,前面一部分用来存储正数,后面的存储负数,划分的地方当最前面的位为1. 运用循环(时钟)往前走和往后走都可以获取到一个值 ...

  9. 假设以邻接矩阵作为图的存储结构_学习数据结构第五章:图(图的存储方法)...

    第五章:图(图的存储方法) 1.邻接矩阵法 下面是一个无向图的表示,我们使用一个一维数组存放点集,使用一个二维数组存放边集 二维数组表示边:行号表示其实端点,列号表示结束端点,值表示该边是否存在,以及 ...

最新文章

  1. ftl模板导出excel_freemarker导出复杂Excel
  2. 限制用户对页的访问php,如何限制对Django中管理页的访问?
  3. UNIX网络编程笔记(2):一个简单的时间获取程序
  4. 互斥锁、条件变量、信号量浅析
  5. 序列复杂度怎么看_《趣学算法》作者又一力作上架,再分享您一篇算法复杂度...
  6. 准确实用,7个优秀的开源中文分词库推荐
  7. 24时区,GMT,UTC,DST,CST时间详解
  8. 【django】三、常用的模板标签和过滤器
  9. gitlab部署、配置更改、备份及恢复
  10. 如何巧妙的运用好弹簧布局SpringLayout?
  11. MATLAB卷积运算(conv)
  12. 一、java入门(高琪java300集+java从入门到精通笔记)
  13. linux查看xlsm文件,XLSM 文件扩展名: 它是什么以及如何打开它?
  14. 2020牛客暑期多校训练营(第九场) The Flee Plan of Groundhog
  15. 移位加密字母C语言,替代密码和置换密码地C语言实现
  16. Pytorch 学习日记(一)
  17. java常见的密码加密方式base64,Sha256,MD5
  18. microsoft 365 E5申请过程收不到验证码的解决方案
  19. 虚幻4里的地图动态加载
  20. 所生成项目的处理器架构“MSIL”与引用“ ”的处理器架构“AMD64”不匹配。

热门文章

  1. html表ge模板_16款用户体验优秀的HTML CSS价格表格模板 附演示及下载
  2. 硬盘FAT32转NTFN格式的命令
  3. PHP5 ini配置文件优化
  4. 以太网,IP,TCP,UDP数据包分析【转】
  5. libevent入门
  6. Python 元组 (tuple)
  7. MongoDB 权限
  8. 编程之美----不要被阶乘吓到
  9. Android图片360全景旋转
  10. 4.Winform实现控件拖动