@property、@sythesize以及Ivar和@dynamic讲解(下)
下面僅僅是一些基本知識(shí),可能有些知識(shí)用的比較少,不過(guò)知道怎么使用或者了解這個(gè)知識(shí),還是不錯(cuò)的,畢竟技多不壓身嘛!讀完這篇文章大約需要5-10分鐘左右!!!
一、@property
1、在頭文件中:
@property int count;面對(duì)上面的一行代碼
- (int)count; -(void)setCount:(int)newCount;?通過(guò)@property int count ;這樣定義完成之后,我們就可以使用這個(gè)屬性啦,而且這個(gè)屬性就會(huì)自動(dòng)有setter和getter方法。
例如:
@property NSString *userName;第一步生成_userName屬性
第二步為_(kāi)userName屬性自動(dòng)生成set/get方法啦!!!
>>>>>Problem?@property 增強(qiáng)
問(wèn)題1:使用property增強(qiáng)后,什么時(shí)候要重寫getter/setter方法?
(1).使用property增強(qiáng),只會(huì)生成最簡(jiǎn)單的getter/setter方法的聲明和實(shí)現(xiàn),并不會(huì)對(duì)傳入的數(shù)據(jù)進(jìn)行過(guò)濾。
(2).如果想對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,那么我們就必須重寫getter/setter方法。
問(wèn)題2:重寫getter/setter方法有哪些注意點(diǎn)?
(1)如果重寫了setter方法,那么property就只會(huì)生成getter方法
(2)如果重寫了getter方法,那么property就只會(huì)生成setter方法
(3)如果同時(shí)重寫了getter/setter方法,那么property就不會(huì)自動(dòng)幫我們生成私有的成員變量(帶_的成員變量)?
二、@synthesize
#import <Foundation/Foundation.h> #import "User.h" //有時(shí)候我們不想定義屬性為_(kāi)開(kāi)頭的 //這時(shí)候我們就可以使用@synthesize,來(lái)修改我們想要的屬性名 //這時(shí)候?qū)傩訽userName變成了$userName @implementation User @synthesize userName = $userName; @end因?yàn)槲覀兪褂?#64;property定義屬性之后,如果我們想修改這個(gè)屬性的名稱,我們可以使用@synthesize關(guān)鍵字來(lái)對(duì)名稱進(jìn)行修改。
>>>>>>注意點(diǎn):
@synthesize age;代表:
(1).setter和getter實(shí)現(xiàn)中會(huì)訪問(wèn)@synthesize后同名成員變量age
(2).如果成員變量age不存在,就會(huì)自動(dòng)生成一個(gè)@private的成員變量age
三、Ivar(成員變量)
Ivar可以理解為類中的一個(gè)變量,主要作用是用來(lái)保存數(shù)據(jù)的。@property可以說(shuō)@property = Ivar + setter + getter?
>>>>lvar 用的并不是特別多,大家用的時(shí)候也不會(huì)太在意這個(gè)
@dynamic和@synthesize的異同
a.?通過(guò)@synthesize 指令告訴編譯器在編譯期間產(chǎn)生getter/setter方法
b. 通過(guò)@dynamic指令,告訴編譯器,屬性的 setter 與 getter 方法由用戶自己實(shí)現(xiàn),不會(huì)自動(dòng)生成,如果沒(méi)有自動(dòng)生成在運(yùn)行時(shí)調(diào)用會(huì)crash
c.?有的存取是在運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建的,如在CoreData的NSManagedObject類使用的某些。如果你想這些情況下,聲明和使用這些屬性,但要避免缺少方法在編譯時(shí)的警告,你可以使用@dynamic動(dòng)態(tài)指令,而不是@synthesize合成指令
?
轉(zhuǎn)載于:https://www.cnblogs.com/guohai-stronger/p/9034831.html
總結(jié)
以上是生活随笔為你收集整理的@property、@sythesize以及Ivar和@dynamic讲解(下)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python全栈学习--day40()
- 下一篇: IntelliJ中的main函数、for