文档章节

第01天OC语言(13):方法和函数的区别

lyh2017iOS
 lyh2017iOS
发布于 2017/07/11 00:07
字数 384
阅读 4
收藏 0

#####一、概念


/*
 函数 和 方法的 区别
  1.函数属于整个文件, 方法属于某一个类
    方法如果离开类 就不行
  2.函数可以直接调用
 注意 :  虽然函数属于整个文件,但是如果把函数 写在 类的声明中 会不识别
 方法的注意点 : 
    方法可以没有声明 只有实现
    方法可以只有声明没有实现,编译不会报错,但是运行会报错
     如果方法 只有声明 没有实现, 那么运行时会报错 :  reason: '+[Person demo]: unrecognized selector sent to class 0x100001140' ---class
    发送了一个不能识别的消息, 在Person类中 没有+开头的 demo方法
 reason: '-[Person test]: unrecognized selector sent to instance 0x100103560' ---instance
 
 类也有一个注意点 : 
 类 可以只有实现 没有声明
 注意 : 在开发中 不建议这样写
 */

#####二、代码

#import <Foundation/Foundation.h>
#pragma mark 类

//@interface Person : NSObject
//// 对象方法声明
//- (void)test;
//// 类方法声明
////+ (void)demo;
//
//
///*
//// 外部函数声明
//extern void sum();
//// 内部函数声明
//static void minus();
//// 外部函数
//extern void sum()
//{
//    printf("sum");
//}
//// 内部函数
//static void minus()
//{
//    printf("minus");
//}
// */
//
//@end

@implementation Person :NSObject
// 对象方法实现
- (void)test
{
    NSLog(@"test");
}
// 类方法实现
+ (void)demo
{
    NSLog(@"demo");
}

@end

#pragma mark 函数
// 外部函数声明
extern void sum();
// 内部函数声明
static void minus();
// 外部函数
extern void sum()
{
    printf("sum");
}
// 内部函数
static void minus()
{
    printf("minus");
}

#pragma mark main函数
int main(int argc, const char * argv[])
{
//    demo();
//    [Person sum];
//    [Person demo];
//    [Person demo];
    Person *p = [Person new];
    [p test];


    return 0;
}

image.png

image.png

image.png

image.png

image.png

image.png

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
OC语言的特性(一)-消息传递与调用函数的表现形式

我们在初学Objective-C时,都会觉得ObjC中的消息传递和其他语言的调用函数差不多,只是在OC中,方法调用用消息传递这一概念来代替。 那么到底怎样区别OC中的消息传递与其他语言的调用函数呢。...

浩浩老师
2015/09/08
1K
0
Swift编程权威指南第2版 读后收获

  自从参加工作一直在用OC做iOS开发。在2015年的时候苹果刚推出swift1.0不久,当时毕竟是新推出的语言,大家也都很有激情的学习。不过在学完后发现很难在实际项目中使用,再加上当时公司项...

滴水微澜
08/14
0
0
Swift4.0基础知识回顾

简单介绍一下Swift Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序,Swift语言让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量更多了解Swift可以去《The...

博行天下
2017/12/06
0
0
从 OC 到 Swift 的快速入门与专业实践

只会介绍与 OC 有明显区别的地方,不会介绍 OC 中没有的,比如元组。当前总结也只是蜻蜓点水而已,但是有 OC 的基础,看这些已经足够。 一、数据 Swift 是类型安全的语言: Swift 必须明确数...

CoderHG
08/04
0
0
Runtime运行时机制

想深入理解Objective-C这门动态语言就不得不深入理解下它的“动态”是如何实现的。早先拜读过《Effective Objective-C 2.0》就让我更深入的窥探到OC运行时特别之处,本文当中也有部分内容借鉴...

Mister志伟
2017/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

获取多个集合列表的笛卡尔积

获取多个集合笛卡尔积 电商中典型业务场景:商品搜索 单属性属性值之间为并查询 不同属性的属性值之间查询为与查询 import java.util.ArrayList;import java.util.List;/** * Created w...

键走偏锋
22分钟前
0
0
echarts 迁移地图 控制鼠标缩放大小比例

在网上找了好久没有找到解决方式,还是重新看了一下文档,终于找到的解决方案, zoom:1, //默认显示级别 scaleLimit:{min:1,max:3}, // 缩放级别 echarts 文档-配置项链接 http://echarts.b...

心驰
25分钟前
0
0
Boot2Docker ISO is out-of-date,

Boot2Docker ISO is out-of-date, downloading the latest release. 使用docker-machine时无法更新Boot2Docker ISO导致创建vm machine失败 解决方法:关闭网络,创建好之后再开启...

writeademo
33分钟前
0
0
在 Tomcat 中设置 Tapestry 框架的 html 热加载

如果开发中使用到了 Tapestry 这个框架,如果事先没有设置过的话,开发的时候 html 是不会热加载的,也就是说修改了 html 文件,不能刷新浏览器后立马看到修改完的效果,必须先重新启动应用服...

LeoXu
55分钟前
0
0
【微服务】开启巨石应用到微服务的探索

背景 在过去的一年时间里,我一直在从事一件事情,将现有的单体应用(巨石应用)向微服务改造。 接下来,将持续整理一些在微服务路上的学习与成长。 为什么要做微服务 单体应用,开发、部署简...

艳沐石
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部