iOS如何获取属性

  介绍

这篇文章主要介绍了iOS如何获取属性,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

<强>指针

如果说到内存,不知道大家会不会想到* *指针* *呢?这里简单介绍一下,让大家有个简单的理解。如果理解不了的话,建议大家找一个C语言的教程,学一下指针。

指针(指针)是编程语言中的一个对象,利用地址,它的值直接指向(指向)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元,因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

<强> *那到底什么是指针呢? ?

,类型*变量名

这就是声明了一个指针变量

<强>,指针类型有什么作用呢?

比如:

int *, num;

指针变量的类型决定了通过这个指针找到变量的首地址以后,连续操作多少个字节空间

为什么会说连续操作多少个字节空间? ?主要是指针有算术运算加减,说白了就是指针的移动。

<李>

指针是int *连续操作4个字节

<李>

指针是双*连续操作8个字节

比如

int *, p =#   p + +;

当指针+ 1的时候,这时候指针要移动1个单元,而不是1个字节! !

那到底这1个单元是多大呢?其实1个单元的大小就是指针类型的大小。这里是int型,所以移动了4个字节

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

以上就是简单给大家做了* *指针* *介绍,其实理解了指针,对于我们出现的一些野指针的错误,运行时源码中的一些机制等等是有所帮助的。言归正传。接下来让我看一道题,真正的去了解内存和指针的关系。

int  num1 =, 10;   int  num =, 20;   int *, p =#   p + +;   printf (“% d   “* p);//打印为10,因为p + +,指针已经移动了4个字节,下一个内存存储10正好是4个字节

这里其实是前边声明了一个num1,正好是4个字节,所以就将十取出来了。(说白了就是内存中下一个连续的4个字节存的是什么取出来就是什么)

说了这么多都是指针和内存,建议大家搞明白以上内容再读以下的内容,如果上边都搞不明白的话,下边有关iOS中运行时取属性的内容有可能就会云里雾里。

<强> iOS中成员变量与属性

以下题目是sunnyxx习题中的一题,网上也有详细的[答案)(http://blog.csdn.net/shznt/article/details/50481819)。这里作者就简述一下自己的理解,如果想看非常详细的答案的话可以点击上边的链接。

下面代码会吗?编译错误/运行时崩溃/NSLog…?

 @interface  Sark : NSObject
  @property (原子,,复制),NSString  *名称;
  @end
  @implementation 衬衣
  安康;(空白)说话
  {
  ,NSLog (@" my  name  is  % @",, self.name);
  }
  @end
  @interface  Test : NSObject
  @end
  @implementation 测试
  安康;(instancetype) init
  {=,self  [super  init);
  ,if (自我),{
  ,id  cls =, (Sark 类);
  ,void  * obj =,, cls;
  ,((__bridge  id) obj 说话);
  ,}
  ,return 自我;
  }
  @end
  命令行参数个数,int 主要(int  const  char  *, argv []), {
  ,@autoreleasepool  {
  alloc], [[Test  init);
  ,}
  ,return  0;
  }

答案:代码正常输出,输出结果为:

2014-11-07 14:08:25.698测试(1097:57255)我的名字叫

,为什么能够正常运行,并调用到说话方法?

计算机将我们的“袍”类信息通过

的id cls=(衬衣类);这一行加载到内存中,并且取得了cls的变量。这个时候其实我们只要知道“cls”这个变量的地址就行了,其实相当于类的对象的地址。“void * obj=, cls。”这句话就让我们获得了对象的地址。(平时我们“新”对象的时候就干了两件事:1,申请内存;2,获取内存的地址(对象变量的地址就是内存的地址),这里的对象与我们“新”出来的对象有所不同。但是虽然不是新的对象,iOS中“类”对象已经存储了我们需要的东西。比如有关变量的内存* *偏移* *,方法等等所有的信息)接下来可以干我们想干的任何事情了。

iOS如何获取属性