真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

iOS開(kāi)發(fā)OC基礎(chǔ):OC屬性的一些概念和基本使用

一、屬性簡(jiǎn)介

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、市中網(wǎng)絡(luò)推廣、微信小程序定制開(kāi)發(fā)、市中網(wǎng)絡(luò)營(yíng)銷、市中企業(yè)策劃、市中品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供市中建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

//屬性是OC2.0之后新出的一種語(yǔ)法,能讓我們快速的生成setter以及getter方法,大大簡(jiǎn)化代碼

二、如何定義一個(gè)屬性

//@property屬性關(guān)鍵字,用來(lái)定義屬性

//NSString *屬性的類型

//name屬性的名字。

//@property只是生成的setter以及getter方法的聲明。
@propertyNSString*name;


三、屬性的使用注意事項(xiàng)
//如果在.m文件中我們自己實(shí)現(xiàn)了setter以及getter方法,則編譯器就不會(huì)再幫我們生成setter和getter方法,并且也不會(huì)自動(dòng)生成帶下劃線的實(shí)例變量。//@synthesize當(dāng)給屬性名指定實(shí)例變量時(shí),先去查找對(duì)于該類有沒(méi)有定義該實(shí)例變量,如果定義了,就直接使用,如果沒(méi)有定義,就自動(dòng)生成一個(gè)指定的實(shí)例變量,

//切記,自動(dòng)生成的實(shí)例變量是私有的,子類不可訪問(wèn)。

//如果實(shí)例變量想讓子類訪問(wèn),就必須在.h文件中定義。

//@synthesize用來(lái)setter以及getter方法的實(shí)現(xiàn)//name屬性名=實(shí)例變量名

//告訴編譯器,在自動(dòng)生成setter以及getter方法的內(nèi)部實(shí)現(xiàn)時(shí),所操作的實(shí)例變量是哪一個(gè)

//當(dāng)@synthesize屬性名不指定所要操作的實(shí)例變量名時(shí),自動(dòng)生成的實(shí)例變量和屬性名相同//如果連@synthesize都省略的話,編譯器自動(dòng)生成的實(shí)例變量名就是下劃線+屬性名。

//@synthesize name = _name, sex = _sex, age = _age, weight = _weight;



四、屬性的特性:

1.讀寫特性:

//  (1)readonly(只讀)告訴編譯器只生成getter方法,不生成setter方法。

//  (2)readwrite(既可讀,又可寫)既生成getter方法,也生成setter方法,默認(rèn)是readwrite

//  (3)getter =方法名,告訴編譯器在生成getter方法時(shí),方法名為指定的方法名,如果沒(méi)有指定,默認(rèn)的getter方法的方法名和屬性相同

//  (4)setter =方法名,告訴編譯器在生成setter方法時(shí),方法名為指定的方法名,如果沒(méi)有指定,默認(rèn)的setter方法的方法名為set +屬性名(第一個(gè)字母大寫)

2.原子特性:

//  (1)atomic原子性,會(huì)保證線程安全,也就是說(shuō)同一時(shí)間內(nèi)只能有一個(gè)線程在訪問(wèn),有一個(gè)加鎖的過(guò)程,該線程訪問(wèn)結(jié)束之后,有一個(gè)解鎖的過(guò)程,默認(rèn)的原子特性是atomic。

//  (2)nonatomic非原子性,不保證線程安全,但是效率要比atomic高很多,一般情況下使用沒(méi)有問(wèn)題,因?yàn)槲覀冊(cè)谑褂胹etter和getter方法時(shí),有時(shí)可能特別頻繁,使用atomic會(huì)嚴(yán)重影響操作的效率,所以蘋果官方推薦對(duì)于原子特性建議使用nonatomic.

3.語(yǔ)義特性

//  (1)assign(默認(rèn))簡(jiǎn)單的賦值,主要針對(duì)于基本的數(shù)據(jù)類型,有時(shí)也可針對(duì)于對(duì)象類型;

//  (2)retain該語(yǔ)義特性會(huì)對(duì)內(nèi)存的引用計(jì)數(shù)加1,針對(duì)于對(duì)象類型(只能適用于對(duì)象)

//  (3)copy該語(yǔ)義特性會(huì)將對(duì)象拷貝一份,然后對(duì)新的對(duì)象持有所有權(quán),只針對(duì)于對(duì)象


五、不同語(yǔ)意特性的setter和getter方法的系統(tǒng)內(nèi)部實(shí)現(xiàn)(我們只要了解即可)
如果屬性的語(yǔ)義特性聲明為assign,則內(nèi)部生成的setter方法為:

//- (void)setName:(NSString *)name {

//    _name = name;

//}

//getter方法

//- (NSString *)name {

//    return _name;

//} 

//如果屬性的語(yǔ)義特性聲明為retain,則內(nèi)部生成的setter方法為:

//- (void)setName:(NSString *)name {

//    if (_name != name) {

//        [_name release];

//        _name = [name retain];

//    }

//}

//getter

//- (NSString *)name {

//    return [[_name retain] autorelease];

//} 

//如果屬性的語(yǔ)義特性聲明為copy,則內(nèi)部生成的setter方法為:

//- (void)setName:(NSString *)name {

//    if (_name != name) {

//        [_name release];

//        _name = [name copy];

//    }

//}

//getter方法

//- (NSString *)name {

//    return [[_name retain] autorelease];

//}


網(wǎng)站標(biāo)題:iOS開(kāi)發(fā)OC基礎(chǔ):OC屬性的一些概念和基本使用
網(wǎng)頁(yè)網(wǎng)址:http://weahome.cn/article/jpcghi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部