日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!

發布時間:2023/11/29 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一小節的隨筆寫了常用的打印以及很基礎的數據類型的定義方式,今天就來一起學習下如何創建類與函數的一些隨筆;

??? 首先類的創建:在Xcode下,菜單File-New File,然后出現選擇class模板,如下圖(圖1)

圖1 class 模版選擇界面

???? 這里不需要手動選擇什么,,默認是Objective-C class模版,我們直接Next,出現以下窗口:(圖2)?

?圖2 為新建類起類名

?????窗口下,我們只需要將類名填寫好就ok,直接點擊”Finish“,這里便于講解后續的代碼,這里我將類名起名為”MyClass“

??? 點擊”Finish“后,在我們的項目下會出現兩個文件:

1.?MyClass.m

2.?MyClass.h

??? 接觸過c語言的很熟悉會生成兩個文件,將一個類分為了兩個部分,簡單而言:

“.h”后綴的是此類聲明,比如變量、方法聲明都會在此文件下定義—類定義部分;

“.m”文件是書寫類方法的實現—類實現部分;

???? ok,然后先看"MyClass.h"與“MyClass.h” 兩個文件中自動生成的代碼:?

  • //以下為?MyClass.h?中的代碼:#import?<Foundation/Foundation.h>//????@interface:表示類接口部分//????NSObject?@interface?MyClass?:?NSObject?{}//end?標識結束類接口部分@end//以下為?MyClass.m?中的代碼:#import?"MyClass.h"//??@implementation:表示類實現部分@implementation?MyClass//end?標識結束類實現部分@end?
  • ?

    ???? 下面我們簡單在MyClass類中添加幾個函數和變量,當然我這里說的添加在實現上分為兩步:首先在.h類聲明文件中進行函數聲明,然后在.m文件下進行實現;代碼如下:

    首先在MyClass.h 中定義:

  • #import?<Foundation/Foundation.h>//?@interface:表示類接口部分@interface?MyClass?:?NSObject?{int?himiX,himiY;}//聲明兩個帶有返回值的函數-(int)?getX;-(int)?getY;//聲明兩個無返回值但有一個參數的函數-(void)?setX:(int)?x;-(void)?setY:(int)?y;//聲明一個無返回值,但有兩個參數的函數-(void)?setXY:(int)?x?andSetXY:(int)?y;//end?標識結束類接口部分@end?
  • ?

    ???? 定義了兩個整型以及四個函數,函數的種類分為以下四種:

    ??? 1. 帶返回值的函數

    ??? 2. 不帶返回值的函數

    ??? 3.有一個參數的函數

    ??? 4.有兩個(多個)參數的函數

    ?然后在MyClass.m中實現這些函數:

  • #import?"MyClass.h"//???@implementation:表示類實現部分@implementation?MyClass//----以下是聲明的函數一一實例的代碼-(int)?getX{return?himiX;}-(int)?getY{return?himiY;}-(void)?setX:(int)?x{himiX=x;}-(void)?setY:(int)?y{himiY=y;}-(void)?setXY:(int)?x?andSetXY:(int)?y{himiX?=x;himiY?=y;}//end?標識結束類實現部分@end?
  • ?

    ?

    ?

    關于函數定義有兩點需要詳細說明:

    ??? 1.關于“-”符號表示的方法類型其詳細含義指的是 :實例方法;

    ??? 如果是“+”符號表示:這個函數是一個類函數,表明其他代碼可以直接調用的類方法;不用創建其類的實例;

    ??? 2.關于多個參數參數定義:當想聲明一個有多個參數的方法時,我們可以理解當前這個方法的方法名被分為多個部分;

    ??? 比如有兩個參數,那么整個方法的名字可以認為此函數的名字將被分為兩部分;三個參數的函數,其函數名就有三個部分...

    ??? 那么為了便于識別是一個函數中的名字部分,所以當參數有多個時,名字的命名規則可以按照如下這樣:

    例如這里定義了一個三個參數的函數:

    方法名的第一部分:getHimi 第二部分 getHimiTwo 第三部分 ThreeGetThree

    ??? 當然這里我是想告訴大家,多個參數的函數中,每一部分的函數名盡可能有規律可循即可,便免與其他函數名混淆;

    ???? ok,類設計完畢之后,下面我們在程序主函數中,實例此類對象,并調用其函數,代碼如下:

  • #import?<Foundation/Foundation.h>#import?"MyClass.h"int?main?(int?argc,?const?char?*?argv[])?{NSAutoreleasePool?*?pool?=?[[NSAutoreleasePool?alloc]?init];//-----------//實例類對象MyClass?*mc?=[[MyClass?alloc]init];//調用帶有返回值的函數int?x?=?[mc?getX];int?y?=?[mc?getY];NSLog(@"x?=?%i,y?=?%i",x,y);//調用無返回值且帶有一個參數的函數[mc?setX:8];[mc?setY:23];x?=?[mc?getX];y?=?[mc?getY];NSLog(@"x?=?%i,y?=?%i",x,y);//調用無返回值且帶有兩個(多個)參數的函數[mc?setXY:9?andSetXY:22];x?=?[mc?getX];y?=?[mc?getY];NSLog(@"x?=?%i,y?=?%i",x,y);[mc?release];//-----------[pool?drain];return?0;}?
  • ?

    ?類的實例化:

    如上一段代碼中對MyClass類的實例化的代碼:

    MyClass *mc =[[MyClass alloc]init];

    [[MyClass alloc]init] 中的 alloc 是固定格式,是為對象申請內存空間, init則完成對象的初始化工作;

    方法(函數的調用):

    首先我們通過實例化了一個MyClass對象-mc,然后通過mc調用其類中的函數:

    有返回值并且無參數的函數調用:

    變量 = [實例 方法名];

    沒返回值且有一個參數的函數調用:

    [實例 方法名:參數]

    沒返回值且有兩個(多個)參數的函數調用:

    [實例 方法名(第一部分):參數1 方法名字(第二部分):參數2];

    ???? ok,然后觀察運行項目的結果:?

    ???? ok,此小節就是這些,下面附上源碼下載把:仍然免費共享~希望大家多多支持~

    ??? 源碼下載地址:?http://www.himigame.com/himistudy/396.html





    本文轉自 xiaominghimi 51CTO博客,原文鏈接:http://blog.51cto.com/xiaominghimi/607036,如需轉載請自行聯系原作者

    總結

    以上是生活随笔為你收集整理的[Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。