[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” 兩個文件中自動生成的代碼:?

 
  1. //以下為?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 中定義:

 
  1. #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中實現這些函數:

 
  1. #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,類設計完畢之后,下面我們在程序主函數中,實例此類對象,并調用其函數,代碼如下:

 
  1. #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,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392285.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392285.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392285.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2024-AI人工智能學習-安裝了pip install pydot但是還是報錯

2024-AI人工智能學習-安裝了pip install pydot但是還是報錯 出現這樣子的錯誤&#xff1a; /usr/local/bin/python3.11 /Users/wangyang/PycharmProjects/studyPython/tf_model.py 2023-12-24 22:59:02.238366: I tensorflow/core/platform/cpu_feature_guard.cc:182] This …

grafana 創建儀表盤_創建儀表盤前要問的三個問題

grafana 創建儀表盤可視化 (VISUALIZATIONS) It’s easier than ever to dive into dashboarding, but are you doing it right?深入儀表板比以往任何時候都容易&#xff0c;但是您這樣做正確嗎&#xff1f; Tableau, Power BI, and many other business intelligence tools …

qq群 voiceover_如何在iOS上使用VoiceOver為所有人構建應用程序

qq群 voiceoverby Jayven N由Jayven N 如何在iOS上使用VoiceOver為所有人構建應用程序 (How to build apps for everyone using VoiceOver on iOS) 輔助功能入門 (Getting started with accessibility) There’s always those topics that people don’t talk about enough. S…

IntelliJ IDEA代碼常用的快捷鍵(自查)

IntelliJ IDEA代碼常用的快捷鍵有&#xff1a; Alt回車 導入包&#xff0c;自動修正 CtrlN 查找類 CtrlShiftN 查找文件 CtrlAltL 格式化代碼 CtrlAltO 優化導入的類和包 AltInsert 生成代碼(如get,set方法,構造函數等) CtrlE或者AltShiftC 最近更改的代碼 CtrlR…

leetcode 1489. 找到最小生成樹里的關鍵邊和偽關鍵邊(并查集)

給你一個 n 個點的帶權無向連通圖&#xff0c;節點編號為 0 到 n-1 &#xff0c;同時還有一個數組 edges &#xff0c;其中 edges[i] [fromi, toi, weighti] 表示在 fromi 和 toi 節點之間有一條帶權無向邊。最小生成樹 (MST) 是給定圖中邊的一個子集&#xff0c;它連接了所有…

帶彩色字體的man pages(debian centos)

1234567891011121314151617181920212223242526272829303132333435363738我的博客已遷移到xdoujiang.com請去那邊和我交流簡介most is a paging program that displays,one windowful at a time,the contents of a file on a terminal. It pauses after each windowful and prin…

提取json對象中的數據,轉化為數組

var xx1 ["樂譜中的調號為&#xff08; &#xff09;調", "寫出a自然小調音階。", "以G為冠音&#xff0c;構寫增四、減五音程。", "調式分析。", "將下列樂譜移為C大調。", "正確組合以下樂譜。", "以下…

java 同步塊的鎖是什么,java – 同步塊 – 鎖定多個對象

我添加了另一個答案&#xff0c;因為我還沒有添加評論給其他人的帖子。>事實上&#xff0c;同步是用于代碼&#xff0c;而不是對象或數據。在同步塊中用作參數的對象引用表示鎖定。所以如果你有如下代碼&#xff1a;class Player {// Same instance shared for all players.…

大數據對社交媒體的影響_數據如何影響媒體,廣告和娛樂職業

大數據對社交媒體的影響In advance of our upcoming event — Data Science Salon: Applying AI and ML to Media, Advertising, and Entertainment, we asked our speakers, who are some of nation’s leading data scientists in the media, advertising, and entertainment…

Go-項目結構和代碼組織

簡介 做大量的輸入&#xff0c;通過對比、借鑒&#xff0c;加上自己的經驗&#xff0c;產出一個盡可能優的方案。 開源界優秀項目的結構示例 因為最新的 Go 版本已經使用 module 作為版本依賴&#xff0c;所以&#xff0c;所有項目的 vendor 我都忽略&#xff0c;建議直接使用 …

iref streams_如何利用Neo4j Streams并建立即時數據倉庫

iref streamsby Andrea Santurbano通過安德里亞桑圖爾巴諾(Andrea Santurbano) 如何利用Neo4j Streams并建立即時數據倉庫 (How to leverage Neo4j Streams and build a just-in-time data warehouse) In this article, we’ll show how to create a Just-In-Time Data Wareho…

Nodejs正則表達式函數之match、test、exec、search、split、replace使用詳解

1. Match函數使用指定的正則表達式函數對字符串驚醒查找&#xff0c;并以數組形式返回符合要求的字符串原型&#xff1a;stringObj.match(regExp)參數&#xff1a;stringObj 必選項&#xff0c;需要去進行匹配的字符串RegExp 必選項&#xff0c;指定的正則表達式返回值&#xf…

Zabbix 3.0 從入門到精通(zabbix使用詳解)

第1章 zabbix監控 1.1 為什么要監控 在需要的時刻&#xff0c;提前提醒我們服務器出問題了 當出問題之后&#xff0c;可以找到問題的根源 網站/服務器 的可用性 1.1.1 網站可用性 在軟件系統的高可靠性&#xff08;也稱為可用性&#xff0c;英文描述為HA&#xff0c;High Avail…

python 裝飾器裝飾類_5分鐘的Python裝飾器指南

python 裝飾器裝飾類重點 (Top highlight)There’s no doubt that Python decorators are one of the more advanced and tougher-to-understand programming concepts. This doesn’t mean you should avoid learning them — as you encounter them in production code soone…

php中顏色的索引值,計算PHP中兩種顏色之間的平均顏色,使用索引號作為參考值...

我們假設為了討論的目的,每個顏色都有一個“值”.那么,你想要的就足夠簡單&#xff1a;$index 0.2;$val1 get_value_of_color($color1);$val2 get_value_of_color($color2);$newval $val1 * $index $val2 * (1 - $index);$newcolor get_color_from_value($newval);所以,很…

leetcode 989. 數組形式的整數加法

對于非負整數 X 而言&#xff0c;X 的數組形式是每位數字按從左到右的順序形成的數組。例如&#xff0c;如果 X 1231&#xff0c;那么其數組形式為 [1,2,3,1]。 給定非負整數 X 的數組形式 A&#xff0c;返回整數 XK 的數組形式。 示例 1&#xff1a; 輸入&#xff1a;A […

您需要了解的WordPress漏洞以及如何修復它們

by Joel S. Syder喬爾賽德(Joel S.Syder) 您需要了解的WordPress漏洞以及如何修復它們 (WordPress vulnerabilities you need to know about — and how to fix them) WordPress is an incredibly useful and versatile platform for all kinds of blogging. It’s become ver…

Maven基礎。

---恢復內容開始--- Maven&#xff1a; 1、概念。 * maven 是一個項目管理工具。 * maven的作用。 1、jar包。依賴管理。將jar包放在jar包倉庫&#xff08;pom.xml)&#xff0c;不需要每個項目都添加jar包。 2、測試。 3、項目發布。 2、使用。 * 下載解壓即可。 * 環境變量配置…

Dinosaur Run - Dinosaur world Games

轉載于:https://www.cnblogs.com/hotmanapp/p/7092669.html

機器學習實際應用_機器學習的實際好處是什么?

機器學習實際應用Some of my previous introductory posts to machine learning and data science were a bit technical. However, my purpose of this post is to explain some of the practical use-cases of ML solely from a non-technical savvy layman’s perspective w…