zoukankan      html  css  js  c++  java
  • iOS

              ios中的OC是一门面向对象的编辑语言,每一个对象都是类的实例,在OC中每一个对象都有一个名为isa的指针,指向该对象的类。所有NSObject是一个包含isa指针的结构体。

          (1) assign 和 weak 一样是一个弱引用;

          (2) strong是强引用;

          弱引用和强引用在引用的过程中最重要的是引起内存的变化,和内存管理,在setter方法赋值过程中,指针的数值会发生变化,在使用之前每一个实例的指针数字都是1,,alloc,release的时候会+1,使用过后释放内存,进行dealloc进行-1,当-1 之后减到0以后,就执行dealloc进行释放。举例如下。具体的赋值代码:

         (1)- property(nonatomic, assign)NSObject * a;

                - (void)setA:(int) a {

                 - a = a;

                 }

              在弱引用的情况下,直接进行赋值,即原本指针的值为1,赋值以后没有将指针的数字增大,还是1;

           (2) - property(nonatomic, strong)NSObject * a;

                - (void)setA:(int) a {

                [_a release];

                 - a = [a strong];

                 }

             在请引用的情况下,进行+1之后再赋值,使用过后-1仍然是1,返回之前的状态,置为nil。

             而assign,在使用之后也不进行-1,还是1,但是指向的东西却没有了,总是没有变化,也不会指向nil,所以就会发生混乱。

            之前在写一个五子棋的小游戏的时候,就遇到这个问题,assign和strong使用错误,就遇到了系统显示意外的错误。

            例子可以访问我的github地址:https://github.com/leroypus/-,ios新手,有错可以留言,谢谢

                     

  • 相关阅读:
    用折半查找法找出整型数组中指定元素所在的位置,并输出(折半查找法只能用于有序数列)。
    统计母字符串中含有子串的个数。
    //插入排序法对数组中的元素按从小到大进行排序
    求斐波那契(fibonacci)数列前20项的值 ,递归调用
    C++实现一句英文句子中的单词逆置
    C语言-黑白棋(人机对战)
    第九届蓝桥杯-明码
    四连块dfs
    八连块dfs
    求素数
  • 原文地址:https://www.cnblogs.com/lepus/p/5825296.html
Copyright © 2011-2022 走看看