property屬性

在.h文件中聲明@property可用於替代聲明實例變量。他能夠在運行時生成get set方法。安全

聲明以下
性能

@property(nonatomic) int num;

調用方式atom

類名.num = 10;
int n = 類名.num;

在property聲明時會有多種選擇線程

  1. 讀寫屬性readwrite | readonly指針

    readwrite:可讀可寫code

    readonly:只讀對象

    系統默認使用readwrite
    內存

  2. setter相關修飾符:assign| retain | copyget

    assign:表示直接賦值,這個修飾符不會牽涉到內存管理,若是對象類型使用此修飾符可能引起內存溢出it

    retain:針對對象類型進行內存管理,若是對基本數據類型使用會報錯。當給對象類型使用此修飾符時,setter方法會將舊對象屬性releaase,再對新對象進行一次賦值並retain。

    copy:主要用在NSString類型表示複製內容。

    系統默認是assign

    retain是指針的複製不從新分配內存空間,copy是內容的複製

  3. 原子性修飾符:atomic | nonatomic

    atomic:表示線程安全。

    nonatomic:表示非線程安全,使用此屬性性能會提升一點。

    系統默認使用nonatomic

  4. getter和setter修飾符

    @property(getter = getName , setter = setName) Object *obj;

    這兩個修飾符用於自定義getter setter方法名。

一、二、3組只能出現一個4則能夠同時使用

Xcode4.2(iOS sdk4.3和如下版本)和之前的版本用retain和assign

Xcode4.3(iOS 5和以上版本)或以後有了ARC用strong和weak

前面不須要加*的就用assign

strong相似於retain,weak相似於assign

使用assig:對基礎數據類型(如NSInteger, CGFloat)和C數據類型(int, float, double, char等), 另外還有id類型

使用copy:對NSString類型

使用retain:對其它NSObject和其子類

相關文章
相關標籤/搜索