初識Objective-C,objectivec

來源:互聯網
上載者:User

初識Objective-C,objectivec

(區別於Java的學習,歐陽堅老師視頻學習筆記)

1,OC中,關鍵字都由@開始(為避免和C、C++沖入衝突),如@class,@interface,@implementation,@public……

2,for(xx in xx),BOOL,YES,NO。

3,基類—NSObject—單繼承,介面—支援介面協議—@protocol,介面方法可選實現,使用介面可實現多繼承,支援多態、靜態類、異常(@try,@catch,@finally),所有的函數都是虛函數。

4,id類型:OC中,每一個目標都可以表達成id類型,範性,可以認為是NSObject *或者void *(任何指標類型)。

5,nil:等同於null,表示一個目標的指標(null 指標)。

6,OC類分為 2 個檔案,一個是.h,一個是.m檔案。.h是類聲明(函數欄位、函式宣告),. m存放類的具體實現。

類聲明用關鍵字@interface  @end來聲明。

類實現用關鍵字@implementation  @end來實現。

如果聲明和實現一個類的函數,需要使用+或-來用在函數開始:+表示類的方法(靜態方法),-表示對象的方法(動態方法)。

<1> 類聲明 <Dog.h>

@interface Dog : NSObject{

  //只能寫欄位、屬性

}

  //寫函式宣告

@end

<2> 類實現 <Dog.m>

#import "Dog.h"

@implementation Dog

  //寫函數實現

@end

7,import 和 include的區別

#include 包含標頭檔的缺點是一個標頭檔可能被包含多次

#import 優點是同一個標頭檔只能被包含一次 

#ifndef _HEAD_H_

#define _HEAD_H_

 

#endif

//C/C++包含標頭檔的格式

8,建立/銷毀對象

//建立對象

Dog * dog = [Dog malloc];

//初始化建構函式

[dog init];

//銷毀對象

[dog release];

9,OC變數聲明

@public,@pretected(預設,預設,保護類型),@private

OC中函數全是public類型(用另外的方法可以實現private,私人化)

10,所有的OC類、介面聲明必須帶 * ,這裡 * 既代表指標也代表引用。

OC:Dog * myDog;

這裡的 * 既表示真正的智者,也表示引用,可以通過 myDog->dog 或者 myDog.dog 這些方法來訪問。

11,OC累中定義函數一般不稱為函數,叫訊息。

12,方法定義:

- (int)f:(int)x;

“-”表示對象方法,“int”表示傳回值,“f”表示函數名,第二個“int”表示參數類型,多個參數之間用“:”隔開,冒號屬於函數名的一部分,並且第二個冒號:前面必須有一個空格。

************

<demo.h>

#import <Foundation/Foundation.h>

//立方體類聲明

@interface Cube : NSObject{

    //@public

    int length;

    int width;

    int high;

}

//- (void)setter:(int)length:(int)width:(int)high;

- (int)retBulk:(int)length:(int)width:(int)high;

- (void)print;

@end 

//長方形類聲明

@interface Rectangle : NSObject{

    //@public

    float len;

    float w;

}

- (float)retArea:(float)len:(float)w;

- (float)retCirc:(float)len:(float)w;

@end

************

<demo.m>

//

//  demo3.m

//  demo3

//

//  Created by qianfeng on 15/11/30.

//  Copyright © 2015年 qianfeng. All rights reserved.

//

#import "demo3.h"

//立方體類實現

@implementation Cube

/*

 -(void)setter:(int)length:(int)width:(int)high{

 //函數功能

 self->length=length;

 self->width=width;

 self->high=high;

 printf("*****\n");

 }

 */

-(int)retBulk:(int)length:(int)width:(int)high{

    int bulk=1;

    bulk = length * width * high;

    return bulk;

}

-(void)print{

    int n[10],i,j,k,tmp;

    for(i=0;i<10;i++){

        scanf("%d",&n[i]);

    }

    for(i=0;i<10-1;i++){

        for(j=0;j<10-i-1;j++){

            if(n[j] > n[j+1]){

                tmp = n[j];

                n[j] = n[j+1];

                n[j+1] = tmp;

            }

        }

    }

    for(k=0;k<10;k++){

        printf("%d ",n[k]);

    }

    printf("\n");

}

@end

  

//長方形類實現

@implementation Rectangle

- (float)retArea:(float)len:(float)w{

    int a=1;

    a=len*w;

    return a;

}

- (float)retCirc:(float)len:(float)w{

    int c=0;

    c=2*len+2*w;

    return c;

}

@end

************

<main.m>

#import <Cocoa/Cocoa.h>

#import "demo3.h"

int main(int argc, const char * argv[]) {

    //printf("#########\n");

    //NSLog(@"Hello, World!");

    //Cube * d = [Cube new];

    //[d setter:1 :2 :3];

    //NSLog(@"%d%d%d\n",d->length,d->width,d->high);

    //printf("%d%d%d\n",d->length,d->width,d->high);

    

    //建立兩個立方體對象,長寬高分別為4、5、6和7、8、9,問,兩個立方體的體積是多少

    Cube * cube1 = [Cube new];

    Cube * cube2 = [Cube new];

    NSLog(@"第 1 個立方體的體積為:%d\n",[cube1 retBulk:4 :5 :6]);

    NSLog(@"第 2 個立方體的體積為:%d\n",[cube2 retBulk:7 :8 :9]);

    //printf("第 1 個對象到體積為:%d\n",[d1 getter:4 :5 :6]);

    //printf("第 2 個對象到體積為:%d\n",[d2 getter:7 :8 :9]);

    

    

    //從終端輸入十個數,按從大到小的順序輸出

    Cube * d4 = [Cube new];

    //[d4 print];

 

    printf("\n");

    

    //建立兩個長方形,長和寬,分別是6、7和4.5、2.3,求兩個長方形面積和周長

    Rectangle *r1 = [Rectangle new];

    Rectangle *r2 = [Rectangle new];

    NSLog(@"第 1 個長方形面積為:%.2f\n",[r1 retArea:6 :7]);

    NSLog(@"第 1 個長方形周長為:%.2f\n",[r1 retCirc:6 :7]);

    NSLog(@"第 2 個長方形面積為:%.2f\n",[r2 retArea:4.5 :2.3]);

    NSLog(@"第 2 個長方形周長為:%.2f\n",[r2 retCirc:4.5 :2.3]);

 

    return 0;

}

 

************

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.