第06天OC語言(09):分類注意事項(xiàng)

  • 不要等到明天,明天太遙遠(yuǎn),今天就行動(dòng)。
須讀:看完該文章你能做什么?

1.知道 方法的調(diào)用順序
2.知道 多個(gè)分類的一些注意事項(xiàng)(同名方法中 系統(tǒng)是怎么調(diào)用的)

學(xué)習(xí)前:你必須會(huì)什么?(在這里我已經(jīng)默認(rèn)你具備C語言的基礎(chǔ)了)

什么是分類

分類是用于給原有類添加方法的,只能添加方法,不能添加屬性(成員變量)

一、本章筆記
 一、分類的注意點(diǎn)
     1.分類是用于給原有類添加方法的,只能添加方法,不能添加屬性(成員變量)
     2.分類中的 @property, 只會(huì)生成 setter / getter方法的聲明,不會(huì)生成實(shí)現(xiàn) 以及 私有的成員變量
     3.可以在分類中 訪問原有類中 .h 的屬性
     4.如果多個(gè)分類中 都有原有類中 同名的方法, 那么調(diào)用該方法的時(shí)候執(zhí)行誰 由編譯器決定
        會(huì)執(zhí)行 最后一個(gè) 參與編譯的分類中的方法
 
     注意 : 如果分類中 有 和 原有類同名的方法,會(huì)調(diào)用分類中的方法
     也就是說會(huì)忽略原有類的方法
     注意 : 在開發(fā)中 盡量不要這樣寫
 二、方法的調(diào)用順序:
     1.分類
     2.本類
     3.父類

二、code
main.m
#pragma mark 09-分類注意事項(xiàng).mp4
#pragma mark 概念
/*
 一、分類的注意點(diǎn)
     1.分類是用于給原有類添加方法的,只能添加方法,不能添加屬性(成員變量)
     2.分類中的 @property, 只會(huì)生成 setter / getter方法的聲明,不會(huì)生成實(shí)現(xiàn) 以及 私有的成員變量
     3.可以在分類中 訪問原有類中 .h 的屬性
     4.如果多個(gè)分類中 都有原有類中 同名的方法, 那么調(diào)用該方法的時(shí)候執(zhí)行誰 由編譯器決定
        會(huì)執(zhí)行 最后一個(gè) 參與編譯的分類中的方法
 
     注意 : 如果分類中 有 和 原有類同名的方法,會(huì)調(diào)用分類中的方法
     也就是說會(huì)忽略原有類的方法
     注意 : 在開發(fā)中 盡量不要這樣寫
 二、方法的調(diào)用順序:
     1.分類
     2.本類
     3.父類
 */
#pragma mark - 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#import "Person+LYH.h"
#pragma mark - main函數(shù)
int main(int argc, const char * argv[])
{
    
    Person *p = [[Person alloc]init];
//    p.height = 1.77; // '-[Person setHeight:]: unrecognized selector sent to instance 0x100501380'
    [p say];
    
    return 0;
}

Person
>>>.h
#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    double _weight;
}
@property (nonatomic,assign) int age;

- (void)say;

@end

>>>.m
#import "Person.h"

@implementation Person

@end

Person+LYH
>>>.h
#import "Person.h"

// 1.分類是用于給原有類添加方法的,只能添加方法,不能添加屬性(成員變量)
@interface Person (LYH)
//{
//    double _height;
//}

// 2.分類中的 @property, 只會(huì)生成 setter / getter方法的聲明,不會(huì)生成實(shí)現(xiàn) 以及 私有的成員變量
//@property (nonatomic,assign) double height;

- (void)hello;

@end

>>>.m
#import "Person+LYH.h"

@implementation Person (LYH)

- (void)hello
{
    // 3.可以在分類中 訪問原有類中 .h 的屬性
    NSLog(@"hello %f",_weight);
}

/*
 注意: 如果分類中 有 和 原有類同名的方法,會(huì)調(diào)用分類中的方法
 也就是說會(huì)忽略原有類的方法
 注意 : 在開發(fā)中 盡量不要這樣寫
 */
- (void)say
{
    NSLog(@"%s",__func__);
}
@end

Person+LYS
>>>.h
#import "Person.h"

@interface Person (LYS)

@end

>>>.m
#import "Person+LYS.h"

@implementation Person (LYS)


// 如果多個(gè)分類中 都有原有類中 同名的方法, 那么調(diào)用該方法的時(shí)候執(zhí)行誰 由編譯器決定
// 會(huì)執(zhí)行 最后一個(gè) 參與編譯的分類中的方法
- (void)say
{
     NSLog(@"%s",__func__);
}
@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評(píng)論 19 139
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,265評(píng)論 0 62
  • 2017.12.07日精進(jìn)打卡 2017.12.07日精進(jìn)打卡 姓名:涂柯 公司:歐克拉電子科技有限公司 【日精進(jìn)...
    勝利女神會(huì)微笑閱讀 169評(píng)論 0 0
  • 渠道:在商業(yè)世界中,所有與用戶接觸的點(diǎn)都統(tǒng)稱為渠道。渠道包括四個(gè)方面的內(nèi)容:流量、轉(zhuǎn)化率、客單價(jià)、復(fù)購率。 增加流...
    加一的修煉場(chǎng)閱讀 769評(píng)論 2 3
  • 《有一種夢(mèng)想叫---名師工作室》 一直以來,渴望擁有自己的工作室,今年夏天,在歷經(jīng)面試、筆試的評(píng)...
    蘭州青青子衿閱讀 483評(píng)論 0 1

友情鏈接更多精彩內(nèi)容