首页
学习
活动
专区
圈层
工具
发布

iOS代理,通知,block的用法及不同

在开发过程中,总是遇到不同页面之间传参问题,代理,通知,block 都可以实现这种简单功能,但是有时候都是根据自己的熟悉程度选择使用的方法,并没有深度的认识之间的用法和不同,在此系统的整理下。 ?...介绍 委托或者说代理是协议的一种,顾名思义,就是委托他人帮自己去做事。方法的声明和实现分离开来,代码的连贯性不是很好,但是可以同时传递多组函数,方便在不同时候调用。 2....(3).iOS最常用tableViewDelegate,textViewDelegate 二.通知 1. 介绍 在iOS开发中消息通知机制就是通过消息,来达到通知的目的。...我们需要在通知中心注册我们想要监听的消息,当项目中有地方发出这个消息的时候,通知中心会发送给注册这个消息的对象。 2....它与标准c函数类似,不同之处在于,它除了有可执行的代码之外,还包含了与堆、栈内存绑定的变量。作为一个回调,Block特别的有用,因为block既包含了回调期间的代码,又包含了执行期间需要的数据。

2.1K30

iOS系统的底层通知框架库

原文作者:欧阳大哥2013 https://juejin.im/post/5cce39056fb9a032086ddea7 iOS系统的底层通知框架库 观察者模式是一种用于解耦一系列需要相互协作的类之间进行通信的对象行为模式...iOS系统提供了多种对观察者模式的实现:在Cocoa Touch层通过NSNotification类和NSNotificationCenter类来实现通知消息的注册处理和发送,而在CoreFoundation...系统通知库中的通知消息注册和发送是可以用来实现跨进程通信的一种底层的通知机制。...系统通知库不仅支持iOS系统还支持macOS系统,而且是跨进程的通知消息。...但是一般情况下iOS系统只会用notify_register_dispatch函数来监听通知并通过block的方式进行处理,而macOS系统则所有的处理方式都可用。

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS系统的底层通知框架库

    iOS系统提供了多种对观察者模式的实现:在Cocoa Touch层通过NSNotification类和NSNotificationCenter类来实现通知消息的注册处理和发送,而在CoreFoundation...系统通知库中的通知消息注册和发送是可以用来实现跨进程通信的一种底层的通知机制。...系统通知库不仅支持iOS系统还支持macOS系统,而且是跨进程的通知消息。...但是一般情况下iOS系统只会用notify_register_dispatch函数来监听通知并通过block的方式进行处理,而macOS系统则所有的处理方式都可用。...系统通知函数中的通知不会附带任何的附加参数。 三、通知消息监听者的暂停、恢复、取消 当注册某个通知消息时,系统会返回一个token值来标识这个通知信息。

    1K30

    Linux 删除文本中的重复行

    在进行文本处理的时候,我们经常遇到要删除重复行的情况。那怎么解决呢? 下面就是三种常见方法? 第一,用sort+uniq,注意,单纯uniq是不行的。...shell> sort -k2n file | uniq 这里我做了个简单的测试,当file中的重复行不再一起的时候,uniq将服务删除所有的重复行。...经过排序后,所有相同的行都在相邻,因此unqi可以正常删除重复行。 第二,用sort+awk命令,注意,单纯awk同样不行,原因同上。...P; D' 最后附一个必须先用sort排序的文本的例子,当然,这个需要用sort排序的原因是很简单,就是后面算法设计的时候的“局部性”,相同的行可能分散出现在不同的区域,一旦有新的相同行出现,那么前面的已经出现的记录就被覆盖了...参考推荐: 删除文本中的重复行(sort+uniq/awk/sed)

    12.5K20

    如何计算文本的非重复计数

    需求:计算快递单号的非重复计数 ? (一) 需求分析 如果要计算非重复计数,我们很容易可以想到一个函数DistinctCount,那如果直接使用是不是就可以了呢?...因为DistinctCount在计算非重复计数的时候会把空值也作为一个值来进行计算,所以导致数据上的差异。...快递单号非重复计数:=Calculate(DistinctCount('表1'[快递单号]), Filter('表1','表1'[快递单号]的数据透视表有些许差异,结果是要求把订单号全部显示出来,而直接拖入字段后把没有快递单号的订单号给隐藏了。这里留个小悬念,可以自己动手实现下这个功能。...如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

    2.3K10

    iOS中通知中心(NSNotificationCenter)的使用总结

    iOS中通知中心NSNotificationCenter应用总结 一、了解几个相关的类 1、NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量。...,不可以使用init进行初始化 2、NSNotificationCenter 这个类是一个通知中心,使用单例设计,每个应用程序都会有一个默认的通知中心。...用于调度通知的发送的接受。 添加一个观察者,可以为它指定一个方法,名字和对象。接受到通知时,执行方法。...object对象,那么观察者接收的通知设置的object对象与其一样,才会接收到通知,但是接收通知如果将这个参数设置为了nil,则会接收一切通知。...二、通知的使用流程 首先,我们在需要接收通知的地方注册观察者,比如:     //获取通知中心单例对象     NSNotificationCenter * center = [NSNotificationCenter

    1.1K30

    iOS中TableView的不同类型

    TableView是iOS开发中经常用到的View,针对不同的显示需求,我们需要不同的Cell来进行显示,比较复杂的显示我们一般会自定义Cell的样式,但是简单的显示就可以靠iOS本身支持的列表类型了。...iOS目前支持四中列表类型,分别是: UITableViewCellStyleDefault:默认类型,可以显示图片和文本 UITableViewCellStyleSubtitle:可以显示图片、文本和子文本...UITableViewCellStyleValue1:可以显示图片、文本和子文本 UITableViewCellStyleValue2:可以显示文本和子文本 其显示的样式也各不相同,按顺序如下所示:...cell; // 共四种类型 switch (indexPath.row) { case 0:// UITableViewCellStyleDefault:默认的类型...} return cell; } 可以在我的github获取示例工程:https://github.com/Cloudox/TableTypeDemo

    2K20

    iOS Runtime 简单介绍,以及不同类的 Method Swizzling

    iOS 中方法调用的流程:其实调用方法就是发送消息,所有调用方法的代码例如   [obj aaa]  在运行时 runtime 会将这段代码转换为 objc_msgSend (obj, [@selector...testMethod 方法并没有崩溃并且方法已经成功添加了 4:动态交换方法(也叫 iOS 黑魔法,慎用) 没什么好例子,用一个网上说的例子 (引用别人的东西,懒得复制了,就截了图) 其实本质即使...SEL 和 IMP 的交换,原理是这样的:在 iOS 中每一个类中都有一个叫 dispatch table 的东西,里面存放在 SEL 和他所对应的 IMP 指针,之前也说过方法调用就是通过 sel...ViewController 的 category,另一个是 Tool 类,为了一会区别演示不同类 hook 的不同 (两个类中 hook 的代码完全一样) ViewController 中将要被替换的系统方法...达到一个不同类进行 Method Swizzling 的目的。

    82130

    iOS中支持HTML文本的标签控件——MDHTMLLabel

    iOS中支持HTML文本的标签控件——MDHTMLLabel 一、引言         在iOS开发中对HTML的处理很多时候除了使用WebView外,还需要原生的控件对其进行渲染,例如将HTML字符串渲染为图文混排的...Git上有很多轻量级的HTML渲染框架,列举一些如下: RTLabel:基于UIView的HTML文本渲染控件,git地址:https://github.com/honcheng/RTLabel。...MDHTMLLabel:与RTLabel和RCLabel不同的是,其是UILabel的子类,更加轻量级,不能支持图片标签。...关于RCLabel对图片便签的支持,其只能支持本地的图片,不能支持远程URL图片链接,这在开发中将十分局限,以前我曾加RCLabel做了改造,加了支持远程图片URL的方法,我把它集成在了一个基础框架中,...,MDHTMLLabel是通过代理回调的方式处理的,如下: @protocol MDHTMLLabelDelegate @optional //点击超链接的时候触发的方法 - (void

    3.6K10

    CentOS中基于不同版本安装重复包的解决方案

    CentOS中基于不同版本安装重复包的解决方案 分类: LINUX 2011-12-12 12:45:24 在更新 PHP 版本的时候,出现了NOKEY的错误提示后,暂时没有解决掉这个问题,于是就手动安装了...php-mbstring...rpm  包的高版本,这样在接下来的错作中就出现了错误信息:The program package-cleanup is found in the yum-utils package...存在不兼容问题的话一般是用yum安装一些rpm packages时候会出现missing dependency error,会有error提示的。...解决办法: yum install yum-utils yum-complete-transaction --cleanup-only 清除可能存在的重复包 package-cleanup ...--dupes 清除可能存在的损坏包 package-cleanup --problems 清除重复包的老版本: package-cleanup --cleandupes package-cleanup

    1.8K30

    【业界】iOS Bug解决办法:如何防止Siri读出隐藏的通知

    AiTechYun 编辑:yuxiangyu 尽管苹果尚未针对iOS错误展开修复,使得Siri能够读出隐藏的锁屏通知,但以下方法可以解决目前的安全漏洞。...苹果的内部人员分享了一些解决办法,以防止Siri在锁定屏幕上读出隐藏的通知。苹果目前解决此问题的方法:是简单地禁用某些可能包含机密信息的应用程序的锁定屏幕通知。...要禁用应用程序的通知,你需要进入设置,然后选择通知。选择你不想显示通知的应用程序,并在“锁定屏幕上显示”切换。对其他应用程序也做同样的操作——你不想在锁屏上发送的通知。...关闭此选项,这样当你的手机被锁定时,Siri就不再工作了。 这些只是暂时解决iOS安全漏洞的两种已知方法。目前应该足够解决这个问题,直到苹果推出一个新的修复程序。...因此,如果iOS 11.3将是针对有争议的错误修复而推出的,那将不会是一个惊喜。除了修复之外,许多用户也期待iOS 11.3,因为它会附带健康记录、新animoji和深度电池监控程序等新功能。

    1.4K40

    苹果微信定时发送消息怎么弄

    苹果微信定时发送消息怎么弄在 iPhone 上给微信安排定时发送消息,是个挺实用的办法,可以用来发提醒、生日祝福或定时通知,这样就不用记住确切时间。...微信本身在 iPhone 上没有内置能自动在未来某个时间发送文本消息的功能。应用可以让你编辑消息或保存笔记,但不支持在 iOS 内部自动定时发送。...磨针工具软件可以帮你提醒和复制文本,但不能替代微信的发送权限。用快捷指令安排提醒来发送在 iPhone 上打开快捷指令应用。新建一个个人自动化,选择“时间”作为触发条件,设置好时间和重复天数。...找支持自定义通知和剪贴板动作的应用。用这些应用你可以安排一个包含消息内容的通知,并设置在打开通知时把消息复制到剪贴板。然后点通知,打开微信聊天,粘贴文本并发送。...在电脑端的微信上操作如果你在 PC 或 Mac 上使用微信,安排消息相对容易一些。桌面系统支持自动化或脚本工具,把文本放到聊天并按时发送。

    41200

    对iOS应用中的文本进行本地化

    对iOS应用中的文本进行本地化 原文发表在我的博客 www.fatbobman.com[1] 当我们使用一个英文app时,很多人第一时间会去查看是否有对应的中文版本。...本文中,我们将探讨iOS开发中,如何实现显示文本的本地化工作。本文的Demo[2]采用SwiftUI编写。...文本本地化的原理 作为一个程序员,如果让你考虑设计一套逻辑对原始文本针对不同语言的进行本地化转换,我想大多数人都会考虑使用字典(键值对)的解决方案。...苹果也是采取了同样的处理,通过创建针对不同语言的多个字典,系统可以轻松的查找出一个原始文本(键)对应的本地化文本(值)。....stringsdict最初是为了解决复数问题而提出的,不过这几年又陆续增加了针对不同的数值显示不同的文本(通常用于屏幕尺寸的变化),以及针对特定平台(iphone、ipad、mac、tvos)显示对应的文本等功能

    3.2K20
    领券