Day 06-Object-COC特有の構文

7013 ワード

1.メモリ管理の概要
1.    
     :    
1).             
      1   ,          
2).            ,             
2.        
 :     ,                 ,                
 :OC  ,   C       
BSS :          ,     ,         ,          
   :           ,     ,               
   :   ,        ,                  
 ,BSS ,    ,                ,          ,        
3.       OC  ,         
    iPhone     
    40M  
    45M  
    120M  
          OC  ,         ,               
4.       
           OC     ,                    
5.           
                ,           
                     ,     
6.     
    1). 1     1   ,   retainCount,        ,    unsigned long   8   
            :                    
         ,  1     ,                1
    2).  1           ,                 +1,       1    
    3).      1       ,                -1,       1    
    4).             0   ,          ,                 
7.         
    1).     1 retain  ,            1,   1           
    2).      1 release  ,            1,   1           
    3).     1 retainCount  ,               
       ++ --            0   ,            
             ,        dealloc  
8.        
    MRC: Manual Reference Counting       ,       
      1         ,           retain  ,  1               release  
    2011   , IOS5  
    ARC: Automatic Reference Counting       ,       .             retain release  
9. iOS5  , Xcode4.2    ARC
Xcode7     ARC  
           ARC   
  ARC  MRC
10.            0   ,          
          ,          dealloc  
  dealloc     :
        dealloc  ,            
11.        
    1).    1   ,                1   
    2).           0   ,           ,      dealloc  
    3).     retain  ,           +1
12.      release  ,        ,            -1;
             0   ,            

2.メモリ管理の原則
1.       
    1).          retain  
      1           ,           retain  
    2).          release  
      1           ,          1 release  
2.  ARC   , retain release dealloc          
3.        
    1).           1 release
    2).retain    release      
    3).   retain,     release
       retain,     release
    4).    1       retain,  1        release
        ,     ,  retain     1 release,      

4.野ポインタとゾンビオブジェクト
1.    
    C       :   1     ,      ,         1    ,   1      ,           
    OC     :              ,            
2.         :
           :
      1   ,                   ,                 
             ,                            
                  
        :
            ,                  .                  ,         
3.     
    1         ,                     ,            
                     ,              
                         ,     
                         ,     
4.                ,     ,        
                 ,      
               ,          ,    ,          ,         ,     
5.               .
              ,       1      ,             1     
              
6.               ,           
     1          ,            
     1          ,          nil
     1      nil,               (       )   ,     ,         ,                 
7.     1     

5.単一オブジェクトのメモリ管理
1.    
       1           ,              ,         ,            
2.             
    1).      ,       release
    2).retain    release      
    3).       ,      nil
    4).               retain
3.            
    1).      ,       1 release
    2).retain   release       
    3).                nil

6.複数オブジェクトのメモリ管理
1.     1 OC     , setter     
                     ,          1    ,                  1 retain  
              ,           1    ,     dealloc release
        :
        -(void)setCar:(Car *)car
        {
            _car = [car retain];
        }
        -(void)dealloc
        {
            [_car release]
            [super dealloc]
        }
2.     1 OC     , setter         ,         
                    ,         
           :         ,       1    ,     1    
      release  , retain  
        -(void)setCar:(Car *)car
        {
            [_car release];
            _car = [car retain]
        }

8.@propertyパラメータ
1.  MRC      , 1        1 oc     ,        setter             
    -(void)setCar:(Car *)car
    {
        if(_car != car)
        {
            [_car release];
            _car = [car retain];
        }
    }
        dealloc  
        -(void)dealloc
        {
            [_car release];
            {supper delloc];
        }
             OC     ,          ,          ok 
2. @property
    1).   
        a.         
        b.         getter setter     
        c.         getter setter     
           setter      ,        ,        
3. @property  
    1). @property      
    @property(  1,   2,   3.....)       ;
    2).     @property     
    a.           
    atomic nonatomic
    b.    setter          
    assign retain
    c.     ,        
    readonly readwrite
    d.      getter setter          
    getter setter
4.           
    atomic :   ,    atomic        setter                 
      :        
    nonatomic:   nonatomic       setter              
      :   ,      
      :   ,     nonatomic
5.     setter          
    assign    ,    setter           
    retain:   setter          MRC      
       ,           1   ,     release  , retain  
           OC       ,      retain
            OC     ,   assign
        :
    retain  .       setter      MRC      ,       dealloc   release   
       ,           dealloc release
6.     ,      
readwrite:   ,       getter setter
readonly:    getter     setter
7.   getter setter         
         , @property   getter setter             ,              @property        
    getter = getter     ,    @property   getter     
    setter = setter     ,     @property   setter     ,   setter       ,     1   
        getter setter           
             ,                   
         getter setter     ,                          
                  
    1).           setter     ,                      
    2).      getter     ,        1 BOOL     ,      getter    is  ,         

             : nonatomic
        setter         
          OC     ,   retain
           OC     ,   assign
      ,   
                   ,      readonly
            readwrite
    1).          setter     ,                      
    2).      getter     ,        1 BOOL     ,      getter    is  ,         
          
     1       1 
    getter setter      
             

9. @class
1.           ,  Person.h   Book.h Book.h    Person.h,     ,           ,            ,          
2.    :
        #import        
    @class  ,      1  ,                    ,        1  
 .m    #import      ,       
3.@class #import   
    1).#import                   
    2).@class         ,        ,  1  ,                   1  

10.循環retain
1.           
A      B  , B      A  
    ,        retain,           
2.    :1   retain,   1   assign  assign  1  dealloc     release