OC語言day01-10第一個(gè)OC類方法2

pragma mark 第一個(gè)OC類方法2

pragma mark 概念

pragma mark 代碼

#import <Foundation/Foundation.h>

/*
 事物名稱:iPhone
 屬性: 顏色, 型號, CPU, 尺寸        == 成員變量
 行為: 打電話, 發(fā)短信, 上網(wǎng), 獲取本機(jī)信息        == 成員方法
 */
typedef enum
{
    kYHColorBlack,      // 黑色
    kYHColorWhile,      // 白色
    kYHColorTuHaoJin   // 土豪金
}YHColor; // 自定義一個(gè)枚舉類型 別名為 YHColor

// 1.編寫類的聲明
@interface IPhone : NSObject
{
@public
    float _model; // 型號
    int _cpu;    // CPU
    double _size; // 尺寸
    YHColor _color;  // 顏色
}
#warning 方法聲明
-(void)about;
- (char *)loadMessage;
- (int)singnal:(int)number;
- (int)sendMessage:(int)number : (char *)content;
- (int)sendMessageWithNumber:(int)number andContent: (char *)content;

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

// 如何定義類方法,類方法的寫法和對象方法一模一樣,除了前面的 - 號 不同以外 \
只需要將對象方法的 -號 換成 + ,那么就定義了一個(gè)類方法
+ (int)sumWithVlaue1:(int)value1 andValue2:(int)value2;
+ (void)demo;
//-(NSString *)colorWithNumber:(YHColor)number;
+(NSString *)colorWithNumber:(YHColor)number;

@end

@implementation IPhone

// 行為的實(shí)現(xiàn)
-(void)about
{
    /*
    NSString *name;
    switch (_color) {
        case 0:
            name =@ "黑色";
            break;
        case 1:
            name = @"白色";
            break;
        case 2:
            name = @"土豪金";
            break;

            
        default:
            name = @"華為";
            break;
    }
     */
//    IPhone *p = [IPhone new];
//    NSString *name = [p colorWithNumber:_color];
    
    NSString *name = [IPhone colorWithNumber:_color];
    NSLog(@"型號 = %f, cpu = %i,尺寸 = %f,顏色 = %@",_model,_cpu,_size,name);
#warning 對象方法 調(diào)用對象方法
//    NSLog(@"%s",[self loadMessage]);
    
}

- (char *)loadMessage
{
    return "hello";
}

int singnal(int number)
{
    return 1;
}

- (int)singnal:(int)number
{
    NSLog(@"打電話給%i",number);
    return 22;
}

- (int)sendMessage:(int)number : (char *)content
{
    NSLog(@"發(fā)短信 %i,內(nèi)容 = %s",number,content);
    return 33;
}

#warning 類方法 對象方法
//- (int)sumWithVlaue1:(int)value1 andValue2:(int)value2
//{
//    return value1 + value2;
//}
+ (int)sumWithVlaue1:(int)value1 andValue2:(int)value2
{
    // 類方法中 不可以直接訪問屬性(成員變量)
    //    NSLog(@"打印本機(jī)信息 %f",_model,_cpu,_size,_color);
    IPhone *p = [IPhone new];
    [p singnal:123456789];  // 注意: 在企業(yè)開發(fā)中,不建議這樣使用
    return value1 + value2;
}
+ (void)demo
{
    NSLog(@"%i",[IPhone sumWithVlaue1:10 andValue2:10]);
    NSLog(@"lyh");
}

#warning 工具方法  工具方法, 根據(jù)傳入的整數(shù) 返回對應(yīng)的字符串

//- (NSString *)colorWithNumber:(YHColor)number
+(NSString *)colorWithNumber:(YHColor)number;
{
    NSString *name;
    switch (number)
    {
        case 0:
            name =@ "黑色";
            break;
        case 1:
            name = @"白色";
            break;
        case 2:
            name = @"土豪金";
            break;
            
            
        default:
            name = @"華為";
            break;
    }
    return name;
}

@end
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
    // 1.創(chuàng)建對象
    // 每次給 IPhone類發(fā)送一個(gè)new消息,都會(huì)開辟一塊新的存儲空間
    // 也就意味著每次發(fā)送new消息 創(chuàng)建出來的對象 都是一個(gè)新的對象
    IPhone *p = [IPhone new];
    p->_color = kYHColorTuHaoJin;
    p->_cpu = 1;
    p->_model = 6;
    p->_size = 5.5;
    
    // 2.給對象發(fā)送消息
    [p about];
    
    return 0;
}


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

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

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