[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.mzph.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 …

带彩色字体的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…

Zabbix 3.0 从入门到精通(zabbix使用详解)

第1章 zabbix监控 1.1 为什么要监控 在需要的时刻&#xff0c;提前提醒我们服务器出问题了 当出问题之后&#xff0c;可以找到问题的根源 网站/服务器 的可用性 1.1.1 网站可用性 在软件系统的高可靠性&#xff08;也称为可用性&#xff0c;英文描述为HA&#xff0c;High Avail…

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

Go_ go mod 命令解决墙的问题

简介 由于众所周知的原因&#xff0c;在下载一些库的时候会下载不了&#xff0c;比如 golang.org/x/... 相关的库。为此&#xff0c;网上出现了很多解决方案。 从 Go1.11 开始&#xff0c;Go 引入了 module&#xff0c;对包进行管理&#xff0c;通过 go mod 命令来进行相关操作…

用导函数的图像判断原函数的单调性

前言 典例剖析 例1(给定\(f(x)\)的图像&#xff0c;确定\(f(x)\)的单调性&#xff0c;最简单层次) 题目暂略。 例2(用图像确定\(f(x)\)的正负&#xff0c;确定\(f(x)\)的单调性&#xff0c;2017聊城模拟) 已知函数\(yxf(x)\)的图像如图所示(其中\(f(x)\)是函数\(f(x)\)的导函数…

朴素贝叶斯 半朴素贝叶斯_使用朴素贝叶斯和N-Gram的Twitter情绪分析

朴素贝叶斯 半朴素贝叶斯In this article, we’ll show you how to classify a tweet into either positive or negative, using two famous machine learning algorithms: Naive Bayes and N-Gram.在本文中&#xff0c;我们将向您展示如何使用两种著名的机器学习算法&#xff…

python3:面向对象(多态和继承、方法重载及模块)

1、多态 同一个方法在不同的类中最终呈现出不同的效果&#xff0c;即为多态。 class Triangle:def __init__(self,width,height):self.width widthself.height heightdef getArea(self):areaself.width* self.height / 2return areaclass Square:def __init__(self,size):sel…

深入单例模式 java,深入单例模式四

Java代码 privatestaticClass getClass(String classname)throwsClassNotFoundException {ClassLoader classLoader Thread.currentThread().getContextClassLoader();if(classLoader null)classLoader Singleton.class.getClassLoader();return(classLoader.loadClass(class…

linux下配置SS5(SOCK5)代理服务

SOCK5代理服务器 官网: http://ss5.sourceforge.net/ yum -y install gcc gcc-c automake make pam-devel openldap-devel cyrus-sasl-devel 一、安装 # tar xvf ss5-3.8.9-5.tar.gz # cd ss5-3.8.9-5 # ./configure && make && make install 二、修改配置文…

去除list集合中重复项的几种方法

因为用到list&#xff0c;要去除重复数据&#xff0c;尝试了几种方法。记录于此。。。 测试数据&#xff1a; List<string> li1 new List<string> { "8", "8", "9", "9" ,"0","9"};List<string&g…

Crystal Reports第一张报表

新建一个网站项目&#xff0c;1. 设置数据库 从服务器资源管理器中&#xff0c;数据连接中添加新连接&#xff0c;用Microsoft Access数据库文件作为数据提供程序&#xff0c;连接上Crystal Reports的用例的数据库Xtreme2. 创建新Crystal Reports报表 在工程项目中添加一个…

品牌推广前期要进行哪些针对性的步骤?

企业在品牌推广前需要制订一系列有针对性和连续性的步骤&#xff0c;这些步骤定睛于长期策略&#xff0c;而且要适应目标客户的使用方式和习惯。在企业内部导入品牌VI是前提&#xff0c;外部的宣传则是强调品牌所宣扬的内涵和精神实质&#xff0c;总体来说&#xff0c;这只是一…

php的set 容器,关于STL中set容器的一些总结

1.关于setC STL 之所以得到广泛的赞誉&#xff0c;也被很多人使用&#xff0c;不只是提供了像vector, string, list等方便的容器&#xff0c;更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组&#xff0c;list封装了链表&#xff0c;map和set…

导入导出报错

导入导出报错&#xff1a;另&#xff1a;右键--共享&#xff1a;停止共享&#xff1b;可能无效。此时&#xff0c;可以通过修改文件夹的权限&#xff0c;来达到停止共享的目的&#xff1b;转载于:https://www.cnblogs.com/chenjx/p/7107336.html

mysql复制的工作原理及主从复制的实现

mysql的复制功能主要有3个步骤主服务器将改变记录到二进制日志中&#xff0c;&#xff08;这些记录叫做二进制日志事件&#xff09;从服务器将主服务器的二进制日志事件拷贝到它的中继日志中从服务器重做中继日志中的事件。该过程的第一部分就是主服务器记录二进制日志&#xf…

Office 365 系列之九:配置和体验 Exchange 和 Lync

在之前的篇章中&#xff0c;我们已经安装好 Office 365 Pro Plus 和通过 O365 订阅激活了。接下来我们来看看具体怎么配置和使用 Exchange 和 Skype, 这部分内容对于学习过 Exchange Server 2016 和 Skype For Business 2015 的同学来说就很简单了。通过 OWA 访问 Exchange 对于…

netflix_Netflix的Polynote

netflixNetflix open source Polynote is a new notebook environment and was born out of the necessity to accelerate data science experimentation at Netflix.Netflix开源Polynote是一种新的笔记本环境&#xff0c;其诞生是出于加速Netflix数据科学实验的需要。 Over t…

图片管理程序(Java)

图片管理程序 gitee完整代码下载 github完整代码下载 华南农业大学课程设计作品&#xff08;99分&#xff09; 问题描述 题目目的是编写一个能够对数字像片进行管理的应用程序。 程序能够显示的图片格式包括,.JPG、.JPEG、.GIF、.PNG、和.BMP。 图像文件尺寸,要求能够处理从…