第01天OC語言(09):第一個(gè)OC類方法

一鸵膏、概念
二缩麸、代碼
#import <Foundation/Foundation.h>
#pragma mark 類

@interface IPhone : NSObject
{
@public
    float _model;    // 型號(hào)
    int _cpu;        // cpu
    double _size;    // 尺寸
    int _color;      // 顏色
}

-(void)about;
-(char *)loadMessage;
-(int) signal:(int)number;
- (int)sendMessageWithNumber:(int)number andContent:(char *)content;

// 計(jì)算器
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2;
// 如果你不想每次使用方法 都需要?jiǎng)?chuàng)建對(duì)象存儲(chǔ)空間
// 并且如果該方法中 沒有使用到屬性(成員變量),那么你可以把這個(gè)方法定義為類方法
// 對(duì)象方法 用對(duì)象調(diào)用 類方法用類調(diào)用
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2;

#pragma mark 1.類方法
// 如何定義類方法,類方法的寫法 和 對(duì)象方法一模一樣, 除了前面的-號(hào) 不同以外
// 只需要將對(duì)象方法的 -號(hào) 換成 + , 那么就定義了一個(gè)類方法

+(int)sumWithValue1:(int)v1 andValue2:(int)v2;
+(void)demo;

@end


#pragma mark 實(shí)現(xiàn)

@implementation IPhone
-(void)about
{
    NSLog(@"sum = %i",[IPhone sumWithValue1:30 andValue2:30]);
    NSLog(@"型號(hào) = %f cpu = %i,尺寸 = %f, 顏色 =%i",_model,_cpu,_size,_color);
    
//    IPhone *p = [IPhone new];
//    char *content = [p loadMessage];
//    NSLog(@"loadMessage %s",content);
    
        NSLog(@"loadMessage %s",[self loadMessage]);

}

-(char *)loadMessage
{
    char *content = "老婆我們家我做主";
    return "lyh is cool";
}
-(int) signal:(int)number
{
    NSLog(@"打電話 %i",number);
    return 1;
}
- (int)sendMessageWithNumber:(int)number andContent:(char *)content
{
    NSLog(@"發(fā)短息 %i, 內(nèi)容: %s",number,content);
    return 1;
}
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2


/*
 注意 :如果聲明的是對(duì)象方法 那么必須實(shí)現(xiàn)對(duì)象方法 
        如果聲明的是類方法 那么就必須實(shí)現(xiàn)類方法
 
 類方法 和 對(duì)象方法的區(qū)別
    0.對(duì)象方法 以 - 開頭
        類方法 以 + 開頭
 
    1.對(duì)象方法 必須對(duì)象調(diào)用
       類方法 必須用類調(diào)用
    2.對(duì)象方法中 可以直接訪問屬性(成員變量)
      類方法 不可以 直接訪問屬性(成員變量)
    3.類方法的優(yōu)點(diǎn), 調(diào)用類方法的效率會(huì)比 調(diào)用對(duì)象方法高
    4.類方法 和 對(duì)象方法可以進(jìn)行相互調(diào)用
        4.1 對(duì)象方法中 可以直接調(diào)用類方法
        4.2 可以在類方法中 間接 調(diào)用對(duì)象方法   (注意 : 不建議這樣使用)
        4.3 類方法可 以直接調(diào)用 其他類方法
        4.4 對(duì)象方法 可以直接調(diào)用 對(duì)象方法
 
 類方法的應(yīng)用場景
    如果方法中沒有使用到屬性 (成員變量), 那么能用類方法 就用類方法
    類方法的執(zhí)行效率 比 對(duì)象方法高 
 類方法 一般用于定義 工具方法 
    字符串查找
    文件操作
    數(shù)據(jù)庫操作
 
 */
+(int)sumWithValue1:(int)v1 andValue2:(int)v2;
{
//    NSLog(@"型號(hào) = %f cpu = %i,尺寸 = %f, 顏色 =%i",_model,_cpu,_size,_color); // instance variable '_color' accessed in class method
    IPhone *p = [IPhone new];
    [p signal:123]; // 注意 : 在企業(yè)開發(fā)中, 不建議這樣使用
    return v1 + v2;
}

+(void)demo
{
    [IPhone sumWithValue1:30 andValue2:40];
    NSLog(@"demo");
}
@end


#pragma mark main函數(shù)
void text();
int main(int argc, const char * argv[])
{
    /*
    IPhone *p = [IPhone new];
    p->_model = 4;
    p->_size = 3.5;
    p->_color = 0;
    p->_cpu = 1;
    
    [p about];
    char *content = [p loadMessage];
    NSLog(@"content %s",content);
    [p signal:10010];
    [p sendMessageWithNumber:10010 andContent:"hehe"];
//    int res = [p sumWithValue1:10 andValue2:20];
    int res = [IPhone sumWithValue1:20 andValue2:20];

    NSLog(@"res = %i",res);
     */
    
//    [IPhone loadMessage];
    
    IPhone *p = [IPhone new];
//    int res = [p sumWithValue1:10 andValue2:20]; // No visble @interface for 'IPhone' declares the selector 'sumWithValue1:andValue2:'
    [p about];
//    [IPhone demo];
    
    
    return 0;
}

void text()
{
    // 1.創(chuàng)建對(duì)象
    IPhone *p1 = [IPhone new];
    // 2.利用對(duì)象 調(diào)用加法運(yùn)算方法
//    int res = [p1 sumWithValue1:10 andValue2:20];
    int res = [IPhone sumWithValue1:10 andValue2:20];
    NSLog(@"res = %i",res);
    
}

輸入圖片說明
輸入圖片說明

輸入圖片說明
輸入圖片說明

輸入圖片說明
輸入圖片說明
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眉撵,一起剝皮案震驚了整個(gè)濱河市复濒,隨后出現(xiàn)的幾起案子惭聂,更是在濱河造成了極大的恐慌针姿,老刑警劉巖袱吆,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厌衙,死亡現(xiàn)場離奇詭異,居然都是意外死亡杆故,警方通過查閱死者的電腦和手機(jī)迅箩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門溉愁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來处铛,“玉大人,你說我怎么就攤上這事拐揭〕敷。” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵堂污,是天一觀的道長家肯。 經(jīng)常有香客問我,道長盟猖,這世上最難降的妖魔是什么讨衣? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮式镐,結(jié)果婚禮上反镇,老公的妹妹穿的比我還像新娘。我一直安慰自己娘汞,他們只是感情好歹茶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著你弦,像睡著了一般惊豺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上禽作,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天尸昧,我揣著相機(jī)與錄音,去河邊找鬼旷偿。 笑死烹俗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狸捅。 我是一名探鬼主播衷蜓,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼尘喝!你這毒婦竟也來了磁浇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤朽褪,失蹤者是張志新(化名)和其女友劉穎置吓,沒想到半個(gè)月后无虚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衍锚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年友题,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戴质。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡度宦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出告匠,到底是詐尸還是另有隱情戈抄,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布后专,位于F島的核電站划鸽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏戚哎。R本人自食惡果不足惜裸诽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望型凳。 院中可真熱鬧丈冬,春花似錦、人聲如沸啰脚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽橄浓。三九已至粒梦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荸实,已是汗流浹背匀们。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留准给,地道東北人泄朴。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像露氮,于是被迫代替她去往敵國和親祖灰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

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