程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> [Objective-C]OC中點語法的內存管理

[Objective-C]OC中點語法的內存管理

編輯:關於C語言

下面來一起學習一下點語法的內存管理

(一):賦值

 

  • assign:直接賦值,默認
  • retain:保留對象
  • copy:拷貝對象

    示例代碼:

    @property (assign)Person *person;

    @synthesize person=_person;

    當使用retain的時候為:

    -(void)setPerson:(Person *)person{

        if(_person!=person){
            [_person release];
            _person=[person retain];
        }
    }

    當使用copy的時候(必須對象要實現copy協議)

     

    -(void)setPerson:(Person *)person{
        if(_person!=person){
            [_person release];
            _person=[person copy];
        }
    }
    (二):讀寫性

     

     

     

    • readwrite:生成getter,setter方法,默認
    • readonly:生成那個getter方法

      示例代碼:

      -(void)setPerson:(Person *)person{

          @synchronized(self){
              _person=person;
          }
      } //設置方法

       

      (三):原子性

       

      • atomic:多線程環境下 ,存在線程保護,默認
      • noatomic:多線程環境下,不存在線程保護

        示例代碼:

        -(Person *)person{

            @synchronized(self){
                return _person;
            }    
        }

         

         

        區別:

        assign:直接賦值,只是一個別名而已

        retain:保留該對象,兩個對象指向了同一個位置

        copy:開辟了一個新的內存空間,分別指向了不同的內存位置,引用計數分別為1,

        不過與之前的對象沒有任何關系(特殊情況除外)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved