美文网首页iOS
iOS属性、全局变量声明

iOS属性、全局变量声明

作者: RiversMa | 来源:发表于2016-08-19 15:04 被阅读1196次

本文主要介绍自己使用属性和全局变量时情形,下面分几个方面讲解自己的理解:

1.属性和全局变量声明的位置

  • 1) 在.h文件中,见下方代码:
 #import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{
        NSString *userName;
}
@property (nonatomic, strong) NSString *mtName;
@end
  • 2)在.m文件中我们有两个位置可以声明属性,如下:
 #import "ViewController.h"
 @interface ViewController ()
//1.这里可以声明
{
    NSString *userInfoName;
}
@property (nonatomic, strong) NSString *whatName;
@end
@implementation ViewController{
//2.这里也可以声明
    NSString *haveName;
}

由上面的两种情况可以看出实际上声明全局变量或者属性有以下几种情况:

    1. 全局变量可以看出有三个位置可以声明;
  • 2.属性有两个位置可以声明;

以上的声明也就是正常的理解,在.h文件中可以被外部访问,.m中本类访问,当然在.m文件中你也可以声明@public变量,但是一般我们不这么干!自从了解了运行时后感觉写在哪里都无所谓了,那么一般你们怎么声明属性和变量呢?

2. 属性(property)的特点

- 1)属性的本质:

属性的本质就是:实例变量(ivar) + 存取方法(getter + setter);下面给个截图你就明白了:

myName01.png

说明:如果重写了一个属性的set和get方法,那么系统就不会声明实例变量(成员变量)了,这时候第一个或者第二个任意打开一个就好了!

注意:

其实在实际开发中我们还会遇到@property不会自动合成(autosynthesis)的情况!它们分别是@protocol和category

简单介绍一下:

    1. @protocol中,我们一般是要声明代理对象要实现的方法,如果声明了属性,也就意味着我们需要代理对象实现他的属性的set和get方法!,这个比较好理解!
  • 2.category,如果是分类的话,我们同样需要实现他的set和get方法,这里需要用到两个运行时的函数:
    1)objc_setAssociatedObject
    2)objc_getAssociatedObject
因为都是一些基础的,本人也是菜鸟一枚,如有错误,还望指点,就说这么多吧!

相关文章

  • iOS属性、全局变量声明

    本文主要介绍自己使用属性和全局变量时情形,下面分几个方面讲解自己的理解: 1.属性和全局变量声明的位置 1) 在....

  • ios 全局变量解决方法多次调用

    iOS 全局变量extern 修饰 1.声明全局变量 2.时间戳NSTimeInterval NSDate*c...

  • JS - let const 和 window

    let const class 声明的全局变量,不属于顶层对象(window)的属性

  • ALV显示内表数据的套路

    1.进行ALV全局变量声明 2.设置字段属性,布局属性,显示数据 首先设置字段属性: 其次设置布局属性: 最后就是...

  • 03- global 顶层对象

    1、从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩 var 命令和 function 命令声明的全局变量,依...

  • 杂货小铺之ES6+ 🍕 Let

    let ? ES6新增了let命令,用来声明变量 let声明的全局变量不是全局对象window的属性; ? :va...

  • 顶层对象的属性

    顶层对象属性ES6 之后 var和function命令声明全局变量,依然是顶层对象的属性但是,let const ...

  • IOS 设置全局变量

    在iOS开发过程中关于全局变量的几个方法 1.在APPDelegate中声明并初始化全局变量.AppDelegat...

  • ES6基础笔记

    ES6 声明属性 let(块内变量) var(全局变量) 变量作用域,和变量提升(var) 暂时性死区,重复声明 ...

  • 针对ES6的一些新特性

    var的全部变量是window上的属性,let和const声明的全局变量不是window的属性 箭头函数 没有ar...

网友评论

本文标题:iOS属性、全局变量声明

本文链接:https://www.haomeiwen.com/subject/tkybsttx.html