• OC MRC之 @property参数(代码分析)


    第一部分

      1 //
      2 //  main.m
      3 //  04-@property参数
      4 //
      5 //  Created by apple on 13-8-9.
      6 //  Copyright (c) 2013年 itcast. All rights reserved.
      7 //
      8 #import <Foundation/Foundation.h>
      9 
     10 @interface Book : NSObject
     11 
     12 @end
     13 #import "Book.h"
     14 
     15 @implementation Book
     16 
     17 @end
     18 
     19 
     20 #import <Foundation/Foundation.h>
     21 #import "Book.h"
     22 
     23 @interface Person : NSObject
     24 @property int age;
     25 
     26 // retain : 生成的set方法里面,release旧值,retain新值
     27 @property (retain) Book *book;
     28 @property (retain) NSString *name;
     29 
     30 @end
     31 
     32 #import "Person.h"
     33 
     34 @implementation Person
     35 
     36 //- (void)setBook:(Book *)book
     37 //{
     38 //    if (_book != book)
     39 //    {
     40 //        [_book release];
     41 //
     42 //        _book = [book retain];
     43 //    }
     44 //}
     45 
     46 - (void)dealloc
     47 {
     48     [_book release];
     49     [_name release];
     50     [super dealloc];
     51 }
     52 
     53 @end
     54 
     55 
     56 
     57 
     58 #import <Foundation/Foundation.h>
     59 #import "Book.h"
     60 
     61 @interface Student : NSObject
     62 
     63 @property (retain) Book *book;
     64 
     65 @property (retain) NSString *name;
     66 
     67 @end
     68 
     69 
     70 #import "Student.h"
     71 
     72 @implementation Student
     73 
     74 
     75 - (void)dealloc
     76 {
     77     [_book release];
     78     [_name release];
     79     
     80     [super dealloc];
     81 }
     82 
     83 @end
     84 
     85 
     86 #import <Foundation/Foundation.h>
     87 #import "Person.h"
     88 #import "Book.h"
     89 
     90 int main()
     91 {
     92     Book *b = [[Book alloc] init];
     93     Person *p = [[Person alloc] init];
     94     
     95     p.book = b;
     96     
     97     
     98     NSLog(@"%ld", [b retainCount]);
     99     
    100     
    101     [p release];
    102     [b release];
    103     return 0;
    104 }

    第二部分

     1 //
     2 //  main.m
     3 //  05-@property参数
     4 //
     5 //  Created by apple on 13-8-9.
     6 //  Copyright (c) 2013年 itcast. All rights reserved.
     7 //
     8 
     9 #import <Foundation/Foundation.h>
    10 
    11 /*
    12  1.set方法内存管理相关的参数
    13  * retain : release旧值,retain新值(适用于OC对象类型)
    14  * assign : 直接赋值(默认,适用于非OC对象类型)
    15  * copy   : release旧值,copy新值
    16  
    17  2.是否要生成set方法
    18  * readwrite : 同时生成setter和getter的声明、实现(默认)
    19  * readonly  : 只会生成getter的声明、实现
    20  
    21  3.多线程管理
    22  * nonatomic : 性能高 (一般就用这个)
    23  * atomic    : 性能低(默认)
    24  
    25  4.setter和getter方法的名称
    26  * setter : 决定了set方法的名称,一定要有个冒号 :
    27  * getter : 决定了get方法的名称(一般用在BOOL类型)
    28  */
    29 
    30 @interface Person : NSObject
    31 
    32 
    33 // 返回BOOL类型的方法名一般以is开头
    34 @property (getter = isRich) BOOL rich;
    35 
    36 //
    37 @property (nonatomic, assign, readwrite) int weight;
    38 // setWeight:
    39 // weight
    40 
    41 //
    42 @property (readwrite, assign) int height;
    43 
    44 @property (nonatomic, assign) int age;
    45 
    46 @property (retain) NSString *name;
    47 @end
    48 
    49 #import "Person.h"
    50 
    51 @implementation Person
    52 
    53 @end
    54 
    55 
    56 
    57 
    58 
    59 #import <Foundation/Foundation.h>
    60 #import "Person.h"
    61 
    62 int main()
    63 {
    64     Person *p = [[Person alloc] init];
    65     
    66     
    67     p.rich = YES;
    68     
    69     BOOL b = p.isRich;
    70     
    71     return 0;
    72 }
  • 相关阅读:
    公司初创期使用 PHP,为什么很多公司都会慢慢转型到 JAVA
    Firefox 如何对发送的参数进行调试
    Spring security CSRF 跨域访问限制问题
    IntelliJ IDEA 的 Maven 如何设置自动下载源代码和文档
    Spring 的 WebSecurityConfigurerAdapter 过滤器
    Java NIO Path 接口
    Joda-Time – 可用的时区列表
    JWT 如何解码和获得令牌失效的日期
    MySQL索引相关操作
    详细了解INNODB_TRX、INNODB_LOCKs、INNODB_LOCK_waits、PROCESSLIST表
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5053729.html
Copyright © 2020-2023  润新知