****Objective-C 中的方法的调用
oc语言中采用特定的语言调用类或者实例(对象)的方法称为发送消息或者方法调用。
oc中方法的调用有两种:
第一种:
- [类名或对象名 方法名];
[ClassOrInstance method]; [ClassOrInstance method:arg1]; [ClassOrInstance method1:arg2 method2:arg2]; [[ClassOrInstance method:arg1] otherMethod]; //嵌套发送消息
第二种:
- 对象名.方法名; (点语法)
对Objective-C中一个方法如何传递多个参数的理解
原来如此
Objective-C语法中多参数传递方法经常是初学者最容易犯困的地方。我自己也是刚刚悟出来与大家分享.
分析
由于我们已有的语言经验告诉我们定义方法都是:
一个类型匹配一个参数(动态语言甚至可以忽略类型)
例如:
1. C/C++
public void say(char* word1,char* word2)
2. JAVA
public void say(String word1,String word2)
3. C#(跟Java一模一样)
public void say(String word1,String word2)
4. VB
Public function fun1(word1 as string,word2 as string) as string
5. JS是一个动态语言不需要类型所以只需要定义参数即可
function say(word1,word2)
6. Php
function say($word1,$word2)
7. Python(动态语言不需要类型,类似JS)
def say(word1,word2)
8. ActionScript(动态语言不需要参数)
function say(word1,word2)
9. Perl (好奇心起把这个也找出来了)
sub say{
($word1,$word2) = @_ //@_代表参数名称
}
Objective-C
而Objective-C是怎么定义的呢?
-(void) setWord1:(NSString *) word1 setWord2:(NSString *) word2
中文语法解释是这样的:
(方法的数据返回类型) 方法名: (参数1数据类型) 参数1的变量名 参数2名称: (参数2数据类型) 参数2的变量名 ….
我们先看"参数2名称:(参数2的数据类型) 参数2的变量名"。
*关键点: 方法名等于名称1
看到这里你明白了吗?
结论
OC的函数的一个参数是由3个部分组成的,第一个参数的名称默认为方法名。你如果把它当作是参数名称你就会发现,这是一个多么有爱的"一家三口"啊。但为啥这样定义呢?因为OC中调用方法是这样的:
[obj setWord1: "参数1值", setWord2: "参数2值" ]
[对象 方法名: 参数1值, 参数2的名称: 参数2值]
这就是OC的函数参数定义是如此2的原因了.
http://blog.sina.com.cn/s/blog_87b6473601014tns.html
Objective-c的方法重载
oc没有严格的方法重载.在oc中,方法名不允许相同。比如
****Objective-C 中的方法的调用的更多相关文章
- InvocationHandler中invoke()方法的调用问题
转InvocationHandler中invoke()方法的调用问题 Java中动态代理的实现,关键就是这两个东西:Proxy.InvocationHandler,下面从InvocationHandl ...
- Action中动态方法的调用 Action中通配符的使用 Result的配置
Action中动态方法的调用 动态方法调用(Dynamic Method Invocation,DMI) 标识符:! 一.通过以下选中的文件来查看是否禁止调用动态方法
- 分析spring事务@Transactional注解在同一个类中的方法之间调用不生效的原因及解决方案
问题: 在Spring管理的项目中,方法A使用了Transactional注解,试图实现事务性.但当同一个class中的方法B调用方法A时,会发现方法A中的异常不再导致回滚,也即事务失效了. 当这个方 ...
- Struts2中动态方法的调用
Struts2中动态方法调用就是为了解决一个action对应多个请求的处理,以免action太多. 主要有一下三种方法:指定method属性.感叹号方式和通配符方式.推荐使用第三种方式. 1.指定me ...
- C#同一项目中不同文件或类中的方法进行调用
有两种方法,一是将被调用的类设置成静态类Static,这样就可以直接点出来了,二是将被调用的方法所在类设置成public,这几必须在调用类中先将被调用的类进行实体化,new()出来,再点出来. 一. ...
- MVC,如何在视图中声明方法,调用方法?
<div> <!--在视图中申明方法,此方法的类型已经固定为HelperResult--> @helper ShowHello(string s) { <div> ...
- Java中对象方法的调用过程&动态绑定(Dynamic Binding)
Java面向对象的最重要的一个特点就是多态, 而多态当中涉及到了一个重要的机制是动态绑定(Dynamic binding). 之前只有一个大概的概念, 没有深入去了解动态绑定的机理, 直到很多公司都问 ...
- JNI-Thread中start方法的调用与run方法的回调分析
前言 在java编程中,线程Thread是我们经常使用的类.那么创建一个Thread的本质究竟是什么,本文就此问题作一个探索. 内容主要分为以下几个部分 1.JNI机制的使用 2.Thread创建线程 ...
- Python_Selenium 之以login_page为例实现对basepage封装好的方法调用和对common中公共方法的调用
目的:简化代码,提供框架该有的东西每一个函数 -提供了一个功能 - 公共的功能有了basepage,在PageObjects当中直接调用元素操作. 以下以login_page 为例,实现从配置文件中读 ...
随机推荐
- InvoiceCancelSendApAction
package nc.ui.pu.m25.action; import java.awt.event.ActionEvent; import nc.bs.framework.common.NCLoca ...
- Java - 使用 XSD 校验 XML
package com.huey.dream.utils; import java.io.IOException; import java.io.InputStream; import javax.x ...
- ACM——搜索(一)
南邮OJ——1108 搜索(一) 时间限制(普通/Java):3500MS/10500MS 运行内存限制:65536KByte总提交:1023 测试通过:367 ...
- XML文件的解析方式
XML文件4种解析方式分别是:DOM解析,SAX解析,JDOM解析,DOM4J解析.1.基础方法:DOM:与平台无关的官方的解析方式.SAX:Java平台提供的基于事件驱动的解析方式.2.扩展方法(在 ...
- C语言:Day1~Day4
点击右键查看原图
- 01线性表顺序存储_List--(线性表)
#include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...
- html元素类型 块级元素、内联元素(又叫行内元素)和内联块级元素。
html中的标签元素大体被分为三种不同的类型:块级元素.内联元素(又叫行内元素)和内联块级元素. 块级元素特点: 1.每个块级元素都从新的一行开始,并且其后的元素也另起一行.(霸道,一个块级元素独占一 ...
- 16_会话技术_Session案例
[购物车中的信息保存] [Book.java] package com.Higgin.shopping; public class Book { private String id; private ...
- GNU iconv
GNU iconv 一.关键函数 1.iconv_open() iconv_open(DestinationCharsets, SourceCharSets) 2.iconv() [XSI] [Opt ...
- Codevs 3289 花匠 2013年NOIP全国联赛提高组
3289 花匠 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 花匠栋栋种了一排花,每株花都 ...