文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/11 00:07
字数 384
阅读 6
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

用Redis实现“秒杀”系统

导论 曾经被问过好多次怎样实现秒杀系统的问题。昨天又在CSDN架构师微信群被问到了。因此这里把我设想的实现秒杀系统的价格设计分享出来。供大家参考。 秒杀系统的架构设计 秒杀系统,是典型...

小刀爱编程
15分钟前
2
0
GO redis 相关操作

在gopath 目录下安装 go get github.com/garyburd/redigo/redis package mainimport ("fmt""github.com/garyburd/redigo/redis")//定义一个全局链接池变量var pool *redis.Pool//......

汤汤圆圆
52分钟前
12
0
java8性特性,常用的lambda表达式

1、抽取多个对象中的某个属性,用数组接收 List<Student> students = new ArrayList<>(); List<String> names =students.stream().map(Student::getName).collect(Collectors.toList()); 2、......

Boss-x
53分钟前
18
0
flutter 子组件与父组件

无论是子组件还是父组件,任何时候initState()只执行一次,如果需要判断 就在build里面进行,不然无效的。

大灰狼wow
55分钟前
4
0
Rancher Labs引入全球首个多集群、多租户的Prometheus支持!

近日,Rancher Labs宣布加强对Prometheus的支持,提高Kubernetes集群的可见度。Rancher也因此成为唯一一个在多集群、多租户环境中支持Prometheus的解决方案。 Prometheus正迅速成为监控云原生...

RancherLabs
57分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部