Objective-C方法与函数的区别

  • 方法是唯对象所有
  • 函数是不依赖于对象存在的
方法 函数
- (void)test; void test();
方法是以减号 - 开头 -
类型要用()括起来 -
声明必须写在@interface-@end之间,实现必须写在@implementation-@end之间 可以写在文件中的任意位置
只能由对象来调用 -
可以直接访问成员变量 不可以直接访问成员变量

Objective-C成员方法与类方法的区别

  • 成员方法是以减号 “-” 开头
  • 类方法是以加号 “+” 开头
成员方法 类方法
- (void)test; + (void)test;
  • 成员方法必须使用对象调用
  • 类方法可以直接使用类名调用

总结

  • OC成员方法就好比Java里的非静态方法,需要使用对象调用
  • OC类方法就好比Java里的静态方法(static),可以使用类名直接调用
  • 一般工具类使用类方法比较多

带有返回值的方法

Objective-C

  • 声明

    @interface NumUtil : NSObject
    - (double)pi;
    @end
  • 实现

    @implementation NumUtil
    - (double)pi
    {
    return 3.14;
    }
    @end
  • 调用

    NumUtil *n = [NumUtil new];
    NSLog(@"%f",[n pi]);

Java

  • Java类

    大概是这样

    public class NumUtil{
    public double pi(){
    return 3.14;
    }
    }
  • 调用

    NumUtil numUtil = new NumUtil;
    numUtil.pi();

带有一个参数的方法

Objective-C

  • 声明

    @interface NumUtil : NSObject
    - (int)square:(int)num;
    @end
  • 实现

    @implementation NumUtil
    - (int)square:(int)num;
    {
    return num * num;
    }
    @end
  • 调用

    NumUtil *n = [NumUtil new];
    NSLog(@"%d",[n square:2]);

Java

  • Java类

    大概是这样

    public class NumUtil{
    public int square(int num){
    return num * num;
    }
    }
  • 调用

    NumUtil numUtil = new NumUtil;
    numUtil.square(2);

带有多个参数的方法

Objective-C

  • 声明

    @interface NumUtil : NSObject
    - (int)addNum1:(int)num1 addNum2:(int)num2;
    @end
  • 实现

    @implementation NumUtil
    - (int)addNum1:(int)num1 addNum2:(int)num2
    {
    return num1 + num2;
    }
    @end
  • 调用

    NumUtil *n = [NumUtil new];
    NSLog(@"%d",[n addNum1:1 addNum2:2]);

Java

  • Java类

    大概是这样

    public class NumUtil{
    public int add(int num1, int num2){
    return num1 + num2;
    }
    }
  • 调用

    NumUtil numUtil = new NumUtil;
    numUtil. add(1, 2);

注意

Objective-C方法名的问题

OC的方法名,和Java有些不同,Java很好理解

OC也不难理解,只是习惯了Java的那种命名方式,看到OC有点不适应

举个例子:

  • - (double)pi;

    这个很好理解,方法名就是 pi

  • - (int)square:(int)num;

    带参数的方法名有点特殊了

    首先说冒号“:”,冒号后面的一定是参数

    可以理解成,有几个冒号,就有几个参数

    空格后面参数前面的内容拼起来(不算类型),就是方法名

    那么,这个方法的方法名就是square:,(注意:是有冒号的)

  • - (int)addNum1:(int)num1 addNum2:(int)num2;

    根据上面的方法

    这个方法的方法名就是 addNum1:addNum2:

    其实很好理解,就是把每个参数的描述加上冒号拼接到一块,组成方法名,方便阅读

XCode查看方法名也很方便

Objective-C方法与函数的区别的更多相关文章

  1. python 全栈开发,Day113(方法和函数的区别,yield,反射)

    一.方法和函数的区别 面向对象 初级 class StarkConfig(object): def __init__(self,model_class): self.model_class = mod ...

  2. Scala方法定义,方法和函数的区别,将方法转换成函数

    1. 定义方法和函数 1.1. 定义方法 方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返回类型 1.2. 定义函数 1.3.方法和函数的区别 在函数式编程语言中,函数是 ...

  3. python中方法与函数的区别与联系

    今天huskiesir在对列表进行操作的时候,用到了sorted()函数,偶然情况下在菜鸟教程上看到了内置方法sort,同样都可以实现我对列表的排序操作,那么方法和函数有什么区别和联系呢? 如下是我个 ...

  4. OC-常见错误 方法与函数的区别

    对象方法: 1,减号 - 2,声明必须写在@interface和@end之间   实现必须写在@implement 和@end之间 3,对象方法只能由对象来调用 4,对象方法归类.对象所有 函数: 函 ...

  5. golang方法和函数的区别

  6. Scala 方法和函数

    package com.bigdata // /** Scala 方法和函数:Scala中既有函数也有方法,大多数情况下我们都可以不去理会他们之间的区别. * * 方法:Scala 中的方法跟 Jav ...

  7. Scala学习笔记(三)—— 方法和函数

    1. 方法 方法使用 def 定义: def 方法名(参数名:参数列表,…) :返回值类型 = { 方法结构体 } scala> def add(x : Int ,y : Int):Int = ...

  8. 第1节 Scala基础语法:5、6、7、8、基础-申明变量和常用类型,表达式,循环,定义方法和函数

    4.    Scala基础 4.1.   声明变量 package cn.itcast.scala object VariableDemo {   def main(args: Array[Strin ...

  9. 类属性与对象实现,init方法的作用,绑定方法,绑定方法与普通函数的区别,继承,抽象与继承,派生与覆盖

    今日内容: 1.类属性与对象属性 2.init方法的作用 3.绑定方法 4.绑定方法与普通函数的区别(非绑定方法) 5.继承 6.抽象与继承 7.派生与覆盖 1.类属性与对象属性 类中应该进存储所有对 ...

随机推荐

  1. arc的安装

    安装:   # sudo apt-get install php5 php5-curl   # ubuntu 系统 # sudo yum install php5 # centos 系统   # cd ...

  2. Java 内部类示例

    在下面的示例中,创建了一个数组,使用升序的整数初始化它,并打印索引为偶数的数组值. public class DataStructure { // 创建一个数组 private final stati ...

  3. [LeetCode] Teemo Attacking 提莫攻击

    In LLP world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poisoned ...

  4. NIO-学习

    通道(Channel) 通道表示打开到 IO 设备(例如:文件.套接字)的连接.若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区.然后操作缓冲区,对数据进行处理.C ...

  5. [USACO 06NOV]Corn Fields

    Description 题库链接 给你一个 \(0,1\) 矩阵,只准你在 \(1\) 上放物品:并且要满足物品不能相邻.允许空放,问方案数,取模. \(1\leq n,m\leq 12\) Solu ...

  6. ●线段树题之wows

    ●模拟考试的一道似乎是学长出的题,还不错,挺考代码能力的.以此记录. ●题目以被上传(改了改说法),6128 Lence的方块们 ● (像手纸一样长的贴图……) ●题目大意: 有横向排布的n个点,每个 ...

  7. HDU2303(数论)大整数求余+素数筛选

    Sample Input 143 10 143 20 667 20 667 30 2573 30 2573 40 0 0   Sample Output GOOD BAD 11 GOOD BAD 23 ...

  8. hdu 5464(dp)

    题意: 给你n个数,要求选一些数(可以不选),把它们加起来,使得和恰好是p的倍数(0也是p的倍数),求方案数. - - 心好痛,又没想到动规 #include <stdio.h> #inc ...

  9. 谷歌开源的TensorFlow Object Detection API视频物体识别系统实现教程

    视频中的物体识别 摘要 物体识别(Object Recognition)在计算机视觉领域里指的是在一张图像或一组视频序列中找到给定的物体.本文主要是利用谷歌开源TensorFlow Object De ...

  10. C# 导入excel报错 :不是预期外部表

    错误原因:由于Excel 97-2003的连接格式与Excel 2010 的 不同造成. 解决方案1: 很多人换了2010后,问的最多的问题之一是2003里最经典的ADO中的“provider=Mic ...