你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> 初識Objective

初識Objective

編輯:IOS技巧綜合
[摘要]本文是對初識Objective-C的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

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,表示一個目標的指針(空指針)。

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;

}

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved