OC中類與對(duì)象的基礎(chǔ)應(yīng)用

對(duì)象,是面對(duì)對(duì)象程序的核心
面對(duì)對(duì)象三大特征:繼承,封裝愤炸,多態(tài)
OC中的類:類可以是任意的事物,是具有相同特征的事物

這里要注意:在OC中NSObject是所有類直接或者間接的父類

  • 類的聲明和實(shí)現(xiàn):
  • 類的聲明:(成員變量 + 成員方法)
    成員變量的聲明(成員變量默認(rèn)都是受保護(hù)的@protected)
    a) 在大括號(hào)里面寫成員變量的屬性時(shí)所遵循的規(guī)則:
    1 以下劃線開頭
    2 遵循駝峰原則(首個(gè)單詞字母小寫掉奄,后面單詞首個(gè)字母大寫)
    3 不能與關(guān)鍵詞重名
    b) 直接用@property進(jìn)行聲明:不需要寫set和get方法规个,會(huì)自動(dòng)展開成setter和getter的聲明,會(huì)自動(dòng)生成一個(gè)帶下劃線的成員變量
nonatomic:為原子操作,效率快
copy:修飾字符串
assign:修飾基本類型
retain:修飾對(duì)象
readwrite(默認(rèn)) 生成set和get方法 讀寫
readonly:只生成get方法
  • 方法的聲明:
    對(duì)象方法: -(void)方法名(void); 需要?jiǎng)?chuàng)建對(duì)象來(lái)進(jìn)行調(diào)用诞仓,可以直接訪問(wèn)成員變量
    類方法:+(void)方法名(void); 直接用類名來(lái)進(jìn)行調(diào)用缤苫,不可以直接訪問(wèn)成員變量
    void為沒(méi)有返回值沒(méi)有參數(shù),可以自行修改墅拭,但是如果有參數(shù)活玲,那么每個(gè)參數(shù)的數(shù)據(jù)類型前面必須加上一個(gè)":",冒號(hào)也是方法名的一部分
    類方法的優(yōu)點(diǎn):調(diào)用類方法的效率會(huì)比調(diào)用對(duì)象方法高
    - 對(duì)象方法和類方法可以進(jìn)行相互調(diào)用
    - 對(duì)象方法中可以直接調(diào)用類方法
    - 可以在類方法中間接調(diào)用對(duì)象方法(木木不建議這樣做喲~)
    - 類方法中可以直接調(diào)用其他類方法
    - 對(duì)象方法中可以直接調(diào)用對(duì)象方法
    類方法一般用于定義工具方法:字符串查找,文件操作帜矾,數(shù)據(jù)庫(kù)庫(kù)操作

注意:類方法中不能直接使用成員變量翼虫,但是可以創(chuàng)建對(duì)象后,用對(duì)象去調(diào)用對(duì)象方法屡萤,或者間接訪問(wèn)成員變量. 在OC中的方法珍剑,如果沒(méi)有形參不需要寫( ),而是直接寫一個(gè)“;”。因?yàn)镺C中的( )有特殊的用途死陆,OC方法中的( )是用來(lái)括住數(shù)據(jù)類型的

  • 類的實(shí)現(xiàn):(所有在.h中寫過(guò)的方法都在要.m中實(shí)現(xiàn)一遍,從父類繼承過(guò)來(lái)的不用)

  • 對(duì)象
    對(duì)象是某個(gè)類的具體化招拙,對(duì)象一定一定要初始化才能有大小,有內(nèi)存措译,才能存儲(chǔ)數(shù)據(jù)(木木最開始學(xué)的時(shí)候經(jīng)常忘記初始化對(duì)象别凤,導(dǎo)致各種bug~,要注意啦!!)
    對(duì)象的創(chuàng)建:創(chuàng)建對(duì)象,為對(duì)象分配存儲(chǔ)空間的同時(shí)初始化成員變量
    對(duì)象和對(duì)象指針领虹,這兩個(gè)要分清楚 规哪。
    比如:Student *stu = [[Student alloc] init] 創(chuàng)建了一個(gè)對(duì)象類型的指針指向?qū)ο? [[Student alloc] init] 為對(duì)象 ,stu為對(duì)象指針
    OC中的類其實(shí)本質(zhì)就是一個(gè)結(jié)構(gòu)體塌衰,所以stu這個(gè)指針其實(shí)就是指向了一個(gè)結(jié)構(gòu)體

  • 方法的調(diào)用:
    對(duì)象方法的調(diào)用: [對(duì)象 對(duì)象方法名] self 代表的是當(dāng)前對(duì)象
    類方法的調(diào)用:[類名 類方法名] self代表當(dāng)前類

注意啦K呱浴! 類是沒(méi)有大小的最疆,不能存儲(chǔ)數(shù)據(jù)杯巨!
對(duì)象是有大小的,可以存儲(chǔ)數(shù)據(jù)努酸,但是一定要初始化 0

  • 類中實(shí)例變量的權(quán)限和常用方法:

  • 實(shí)例變量權(quán)限:
    @public:公有的服爷,外部(main函數(shù))中可以直接訪問(wèn),在本類和子類中也可以訪問(wèn)
    @protected(OC中缺省默認(rèn)):受保護(hù)的获诈,在外部(main函數(shù))中不可以直接訪問(wèn)仍源,在本類和子類中可以訪問(wèn)
    @private:私有的,在外部以及子類中都不可以訪問(wèn)烙荷,只能在本類中訪問(wèn)

  • 常用方法:
    init(構(gòu)造函數(shù)):

     set和get方法:  set:用于修改/設(shè)置成員變量;
                   get用于獲取成員變量值  
    
     給set和get方法起別名:@property (nonatomic,assign,setter=setMyHeight:) CGFloat height
    
     description(重寫方法):打印對(duì)象時(shí)調(diào)用這個(gè)方法:  - (NSString *)description
        {
           return [NSString stringWithFormat:@"name == %@ age == %ld",_name,_age];
        } 
    
     點(diǎn)語(yǔ)法:(本質(zhì)就是方法的調(diào)用镜会,轉(zhuǎn)換成相應(yīng)的set和get方法,id類型不能使用點(diǎn)語(yǔ)法)
    
     單例方法:通過(guò)單例創(chuàng)建的對(duì)象永遠(yuǎn)只有一個(gè) ,static 靜態(tài)局部變量终抽,保證變量的唯一性和持久性
    

    如何在方法里面調(diào)用其他方法:
    實(shí)例方法里的self和super:super用于調(diào)用父類方法的關(guān)鍵字,self指向向前對(duì)象或者當(dāng)前類的指針
    >注意:.h中聲明,.m中實(shí)現(xiàn)的方法可以在main函數(shù)中調(diào)用,也可以在本類中用self調(diào)用
    但是在.h中沒(méi)有聲明昼伴,卻在.m中實(shí)現(xiàn)的方法不可以在main函數(shù)中調(diào)用匾旭,只能在本類中用self調(diào)用

這里木木列舉一些之前遇到過(guò)的常見錯(cuò)誤,有需要的可以看一下
1 只有類的聲明圃郊,沒(méi)有了的實(shí)現(xiàn)
2 漏了@end
3 @interface和@implementation嵌套
4 成員變量沒(méi)有寫在括號(hào)里面
5 方法的聲明寫進(jìn)了大括號(hào)
6 成員變量不能在{}中進(jìn)行初始化价涝,不能被直接拿出去訪問(wèn)
7 方法不能當(dāng)做函數(shù)一樣調(diào)用
8 OC方法只能聲明在@interface和@end之間,只能實(shí)現(xiàn)在@implementation和@end之間持舆,也就是說(shuō)OC方法不能獨(dú)立于類存在
9 C函數(shù)不屬于類色瘩,跟類沒(méi)有關(guān)系,c函數(shù)只歸定義函數(shù)的文件所有
10 C函數(shù)不能訪問(wèn)OC對(duì)象的成員
11 低級(jí)錯(cuò)誤:方法有聲明逸寓,但是實(shí)現(xiàn)的時(shí)候?qū)懗闪撕瘮?shù)
12 OC可以沒(méi)有@interface,同樣也是可以定義一個(gè)類的

僅供木木學(xué)習(xí)居兆,以及有需要的伙伴們閱讀~可轉(zhuǎn)載,不可復(fù)制粘貼喲~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末竹伸,一起剝皮案震驚了整個(gè)濱河市泥栖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌勋篓,老刑警劉巖吧享,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異譬嚣,居然都是意外死亡钢颂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門拜银,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)殊鞭,“玉大人,你說(shuō)我怎么就攤上這事盐股∏恚” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵疯汁,是天一觀的道長(zhǎng)牲尺。 經(jīng)常有香客問(wèn)我,道長(zhǎng)幌蚊,這世上最難降的妖魔是什么谤碳? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮溢豆,結(jié)果婚禮上蜒简,老公的妹妹穿的比我還像新娘。我一直安慰自己漩仙,他們只是感情好搓茬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布犹赖。 她就那樣靜靜地躺著,像睡著了一般卷仑。 火紅的嫁衣襯著肌膚如雪峻村。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天锡凝,我揣著相機(jī)與錄音粘昨,去河邊找鬼。 笑死窜锯,一個(gè)胖子當(dāng)著我的面吹牛张肾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锚扎,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼吞瞪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了工秩?” 一聲冷哼從身側(cè)響起尸饺,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎助币,沒(méi)想到半個(gè)月后浪听,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡眉菱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年迹栓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俭缓。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡克伊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出华坦,到底是詐尸還是另有隱情愿吹,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布惜姐,位于F島的核電站犁跪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏歹袁。R本人自食惡果不足惜坷衍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望条舔。 院中可真熱鬧枫耳,春花似錦、人聲如沸孟抗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至仑最,卻和暖如春扔役,著一層夾襖步出監(jiān)牢的瞬間帆喇,已是汗流浹背警医。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坯钦,地道東北人预皇。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像婉刀,于是被迫代替她去往敵國(guó)和親吟温。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容