zoukankan      html  css  js  c++  java
  • iOS 基础之—— Properties

    一篇关于iOS 编程中 @property 方法中属性的介绍,写的十分简洁明了,原文链接请戳。 

    ===读后分割线====

    在iOS 5之后,有了ARC 的出现,不需要手动进行内存管理,@property 中的属性也有了一些变化。

    现在常使用的如下:

    属性 功能介绍
    getter= 给getter方法一个自定义名称
    setter= 给setter方法一个自定义名称
    readonly 不生成setter方法
    nonatomic 禁止多线程,相较默认的线程保护(atomic)可提高性能
    内存管理属性  
    weak 弱引用,所声明的变量没有对象的所有权,可防止retain cycle
    strong 强引用,所声明的变量持有对象的所有权
    copy 创建并引用赋值对象的副本

    copy 属性:

    可用来替代 strong 属性。最好是用来声明变量(values),而不是connections or relationships。

    在Car.h 中:

    @property (nonatomic, copy) NSString *model;
    Car *honda = [[Car alloc] init];
        NSMutableString *tmp = [NSMutableString stringWithString:@"Honda"];
        honda.model = tmp;
        NSLog(@"%@", honda.model); // Honda
        
        [tmp setString:@"Nissa"];
        NSLog(@"%@", honda.model); // Honda

    当变量属性为copy时,tmp 值的改变不会改变honda.model 的值,而strongweak 属性下honda.model值会改变。

    weak 属性:

    delegate 和outlet 应用weak 属性来声明。

    其他属性(在iOS 5之后的开发中不推荐使用):

    retain

    unsafe_unretained

    assign 该属性不代表任何内存管理属性,是原始数据类型(primitive data types)的默认行为,也被用来实现弱引用

  • 相关阅读:
    UVA 10828
    素数推断算法(高效率)
    POJ1611 The Suspects (并查集)
    Android AES加密算法及事实上现
    C语言中的内存对齐
    OpenCV——老照片效果
    uuid 学习
    OpenCV——PS 滤镜, 浮雕效果
    加密算法之BLOWFISH算法
    OpenCV——照亮边缘
  • 原文地址:https://www.cnblogs.com/stonewong/p/3735581.html
Copyright © 2011-2022 走看看