OC中新的传值方式--单例、通知与匿名函数block

本文介绍了Objective-C中除了参数传递之外的三种常见传值方式:单例、通知(NSNotification)和匿名函数(Block)。详细阐述了单例模式的概念和实现,如何通过单例进行值传递;解释了通知机制的工作原理,以及Block的定义、初始化、优势,并展示了Block在回调、修改外部数据等方面的使用案例。
摘要由CSDN通过智能技术生成

说起数据的传递方式,我们大概第一想到的就是参数了,而在OC中新增加了两种比较常用的传值方式——单例(静态对象)、通知(NSNotification)与匿名函数(Block)。

在介绍这两种传值方式之前,我们先介绍一下目前常用的一些传值方式:

1、参数传值
2、方法传值
3、属性传值
4、单例传值
5、通知
6、协议
7、匿名函数/代码块/block/闭包

参数传值

通过参数的方式将值进行传递,常见于各种语言中,一种基础的传值方式。


方法传值

通过方法的返回值来将需要的值传递,与参数传值相同也是一种常见的传值方式。


属性传值

通过对象属性的setter与getter语法进行传值,可在主程序中通过点语法进行调用。


单例传值

什么是单例?

单例是oc中设计模式的一种,它的大体概念是:设置一个全局的、不可销毁的静态对象,通过在内部方法中将其赋值,然后在外部通过读取这个静态对象的值来获得所需要的值的传值方式。


在程序中我们可以通过创建一个静态对象的方法实现。

如:我们需要在下面的对象中创建一个单例。

Book.h

#import "Book.h"

@interface Person : NSObject



@property (nonatomic, copy)NSString *name;
@property (nonatomic, retain)Book *book;


@end

Book.m:

@implementation Person

static Person *person = nil;

@end

创建初始化单例的方法:

#import "Book.h"

@interface Person : NSObject



@property (nonatomic, copy)NSString *name;
@property (nonatomic, retain)Book *book;

//以default,share,standard,getinstance开头
+ (Person *)standardPerson;

@end

实现文件:

@implementation Person

static Person *person = nil;

+ (Person *)standardPerson{
    //保证单例唯一
    if (!person) {
        person = [[Person alloc] init];
    }
    return person;
}

@end

这样单例就创建好了,那么怎么通过单例传值呢?

我们在外部可以通过访问单例的方法和属性获取单例的值,如:

在外部类中我们可以直接通过方法访问单例:

@interface Book : NSObject

@property (nonatomic, copy)NSString *name;

//利用单例获取对象
- (void)getPerson;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值