iOS 使用宏定义函数和代码块

PROFINET方案选型指南:瑞萨/西门子/开源p-net协议栈对比实测 本文基于瑞萨RZ/N2L硬件平台,对瑞萨官方认证协议栈、西门子ERTECH及开源p-net三种PROFINET方案进行了实测对比。重点分析了PROFINET-IRT实时性、CPU/内存资源消耗、开发集成复杂度及许可证成本等核心指标,为工业设备制造商提供了从性能到商业决策的全面选型指南。 阅读详情

iOS使用宏定义函数和代码块

今天在开发过程中碰到一个问题:就是父类中要向外发送通知,然后子类中或者其他类中来接收它。当然一般是把它写到类方法中去,但是有个问题,就是如果调用的类不是它的子类,就不能直接调用,当然也可以采用静态方法实现,我这里主要是想用宏定义来实现,下面我分别介绍使用宏定义函数和定义代码块的方式进行,废话不多说了,直接上代码:

  • 使用宏定义函数实现
//定义
#define SendNotification @"SendNotification"
#define sendMessage(msg) \
({\
dispatch_async(dispatch_get_main_queue(), ^{\
    NSNotificationCenter* notificationCenter = [NSNotificationCenter defaultCenter];\
    [notificationCenter postNotificationName:SendNotification object:nil userInfo:@{@"msg":msg}];\
    });\
})

//使用
sendMessage(@"发个消息试试");

//有返回的宏函数定义
#define getSum(a,b) \
({\
(a+b);\
})

//使用
double sum = getSum(M_PI,M_E);
  • 使用宏定义代码块实现
//定义
#define SendNotification @"SendNotification"
#define sendMessage(msg) \
^(){\
    dispatch_async(dispatch_get_main_queue(), ^{\
        NSNotificationCenter* notificationCenter = [NSNotificationCenter defaultCenter];\
        [notificationCenter postNotificationName:SendNotification object:nil userInfo:@{@"msg":msg}];\
    });\
}()

//使用
sendMessage(@"发个消息试试");

//有返回的宏代码块定义
#define getSum(a,b)\
^(){\
    return a+b;\
}()

//使用
double sum = getSum(M_PI,M_E);
  • 写在最后,当时写的时候,想到了使用宏定义的方式,但是在网上找了一圈没有找到怎么使用宏来定义代码块和函数,于是自己通过尝试实现了,所以在这里Mark一下,希望能够帮到遇到同样问题的人,也为了以后自己忘了能够查到。
Android 开发实战:从零到一集成 espeak-ng 实现中文离线 TTS(无需账号开箱即用) 本文详细介绍了如何在 Android 项目中集成 espeak-ng,实现中文离线语音播报。通过下载 so 库、编写 Java 接口、封装管理类,开发者可快速构建无需账号的 TTS 功能。文章覆盖从零到一的开发步骤、调试技巧及性能优化,适合中高级 Android 开发者参考。 阅读详情

相关推荐

Mplus实战:三变量随机截距交叉滞后模型(RI-CLPM)语法详解与扩展

本文详细解析了Mplus中三变量随机截距交叉滞后模型(RI-CLPM)的构建原理与语法实现。通过将变量分解为稳定的个体间差异与动态的个体内波动,模型能更纯净地揭示多变量间的纵向交互影响。文章以工作压力、睡眠质量与工作满意度为例,提供了完整的语法模板、关键参数设置(如NOCOV命令、残差相关)及结果解读指南,帮助研究者避开常见误区,稳健分析复杂动态关系。

wdx0123456的博客 928

iOS 接收通知宏

/*  发通知  */#define sendNotification(name,obj)  [[NSNotificationCenter defaultCenter] postNotificationName:name object:obj];//pod 'ReactiveCocoa', '2.5'#import "ReactiveCocoa.h"/*  RAC收通知免移除  */#define...

735

时钟门控ICG单元的timing问题

本文探讨了数字IC设计中门控时钟(ICG)的时序收敛问题,重点分析了ICG单元在setup时序检查中易出现违例的原因及优化方法。文章指出,由于ICG单元不在时钟树平衡范围内,其时钟路径延迟通常小于后续寄存器,导致setup时序难以满足。提出的解决方案包括:1)将ICG尽量靠近受控寄存器放置;2)使用set_clock_gating_check命令加强时序约束;3)在布局阶段设置负时钟延迟;4)CTS阶段设置插入延迟。同时强调set_clock_gating_check命令对ICG单元同样有效,并介绍了ICG

u011075954的专栏 1112

iOS中常用的一些宏以及用法

这里博客主要介绍iOS中常用的一些宏以及用法。

我叫柱子哥 1008

一文读懂Cache一致性原理

本文介绍了为什么需要维护cache一致性、一致性协议的本质和类别,以及如何设计一致性协议。

W1Z1Q的专栏 6849

430单片机实现三人投票表决器_基于单片机的五人表决器的设计

姚海云+马野摘要:本设计利用51单片机,按键开关模块,数码管显示模块和LED模块来实现一个简单的五人表决器的功能。按键开关模块中的键2~键6表示五个人,由5个人来投票,当同意的票数大于或者等于3人时,数码管显示同意的人数,说明表决通过。当表决的人数小于3时,数码管显示同意的人数。关键词:表决器;单片机;流水灯;数码管;矩阵键盘;时钟中图分类号:TP391 文献标识码:A 文章编号:1009-304...

weixin_33277215的博客 2558

iOS 常用的#define合集

1、定义常量 定义常量的时候最好以小写字母k开头,让人见名知意, (1)导航栏高度:我们都知道iPhone竖屏时候导航栏的高度为44,这时候可以定义一个常量来表示该高度, #define kNaivgationBarHeight 44 (2)屏幕的宽高:屏幕的宽高就是iOS设备硬件的屏幕尺寸,跟ViewController的view不完全相同, #define kSCREEN...

weixin_30735745的博客 189

Masta调用Geometry Modeller(Space Claim)进行根据三维模型快速建模设置方法

masta中调用ANSYS的space claim的设置方法

xifegnlie的博客 244

用宏定义的形式书写代码块

今天读一个ip传输文件的小例子,看到一个宏定义是这样的: #define TimeBlock(_out, _block) \ struct timeval start; \ struct timeval end; \ struct timeval delta; \ gettimeofday(&start, NULL); \ _block \ get

popvip44的博客 3412

海康威视4G摄像头直连实战:不用萤石云,手把手教你用ISUP SDK搞定跨网段视频流

本文详细介绍了如何通过海康威视ISUP SDK实现4G摄像头的直连通信,提供了一套零平台费、自主可控的技术方案。文章涵盖技术选型、设备端配置、服务器端开发及高级应用场景,特别适合中小型安防项目,帮助开发者解决跨网段视频流传输难题,降低长期运营成本。

weixin_27076351的博客 470

基于simulink的自动紧急制动系统(AEB)的功能验证

本文手把手指导使用Simulink构建自动紧急制动系统(AEB)模型,通过五个关键步骤完成功能验证:1)搭建车辆动力学模型;2)设计雷达传感器模型;3)开发基于碰撞时间(TTC)的决策逻辑;4)设计标准化测试场景;5)进行仿真分析。重点讲解了AEB的多级触发机制(预警、辅助制动、自动制动)和核心指标验证方法,包括制动时机判断、减速度性能等。通过典型场景仿真,展示了AEB如何在2.5秒TTC触发预警,1.2秒TTC启动自动制动,有效避免碰撞。文章还展望了行人AEB、传感器融合等进阶研究方向,为自动驾驶安全系统

amy_mhd的博客 267

玩转iOS“宏定义”

宏定义在C类语言中非常重要,因为宏是一种预编译时的功能,因此其可以比运行时更高层面的对程序流程进行控制。在初学宏定义的时候,大家可能都会有这样一种感觉:就是完全替换么,太简单了。但如果你真这么想,那你就太天真了,不说自己编写宏,在Foundation框架中内置定义的许多宏要看明白也要费一番脑筋。本篇博客,总结了前辈的经验,同时收集了一些编写非常巧妙的宏进行分析,希望可以帮助大家对宏定义有更加深刻的...

a1661408343的博客 1051

工业视觉降本300%实战:C# + 开源YOLO如何干掉Halcon/VisionPro?

在当前制造业普遍追求“降本增效”的大背景下,工业视觉检测系统作为产线的眼睛,其成本问题日益突出。通过该方案,我们成功帮助一家电子厂将单条产线的视觉检测成本从15万降低至不足5千(主要为工控机硬件成本),降本幅度超过95%,且系统稳定性经受住了6个月连续生产的考验。:C#负责“工程化”和“业务逻辑”,YOLO负责“智能算法”,二者结合,完美覆盖了工业视觉从算法到落地的全链路。的组合,构建一套高性能、低成本、易维护的工业视觉解决方案,并彻底替代昂贵的付费库。” 这是一个典型的误区。工业相机/USB相机。

2601_94871597的博客 431

ios 显示代码块(show the code snippet library)

在项目的实际开发中,我们会重复的书写很多的代码,我经常是需要用到某一个功能,就从以前的项目中复制粘贴过来,很是麻烦 下面就为大家提供两种不错的方法, 一、宏定义,这个大家应该很熟悉,在这里就不做多的介绍了 二、就是show the code snippet library(显示代码块) 可以在这里打开: 也可以在这里打开: 下面就来讲述一下具体的用法: 然后,选中...

weixin_34418883的博客 145

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

iOS开发编码建议与规范(持续更新中)

在开发过程中,我们不仅要去看别人的代码,也要让别人看我们的代码。那么,有一个良好的编码习惯将会非常重要。下面将会罗列使用Objective-C来开发iOS的编码建议。 【1】 任意函数长度不得超过50行。(其实很容易就超过50行,这就要考虑代码抽取了。) 【2】 任意行代码不能超过80字符。(其实也很容易超过80字符,可以考虑多行显示,比如有多个参数时,可以每个参数放一行。)可以在

乞力马扎罗的雪CYF的博客 7816

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ios笔记--宏定义,条件编译和文件导入笔记

1、预处理指令 (1)概念:C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如#include文件包含指令),产生一个新的源程序,这个过程称为编译预处理,之后再进行通常的编译。 (2)预处理指令都是以符合“#”开头的,并且结尾不用分号。 (3)预处理指令可以放在文件任何位置,他的作用范围是从它出现的位置到文件尾,习惯上我们常把它放在源程序头部,这样它的作用范围就是整个源程序

谢兴(C/C++) 2255

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

iOS 知识点归纳- 持续更新

以下的知识点都是平时的积累 不足之处请多指教 1. 由于证书的原因,安装在手机上的iOS Demo app 运行几天后就无法打开。 2. typedef returnType (^name)(arguments); 例子:typedef void (^btnClickedHandler)(UIButton *sender); 3. #define NS_CL

蜗牛一步一步爬 1722

iOS宏和__attribute__

1.iOS宏的经典用法   1>常量宏、表达式宏       #define  kTabBarH  (49.0f)       #define  kScreenH  [UIScreen mainScreen].bounds.size.height       #define  isScreenWidthEqual320 (fabs([UIScreen mainScreen].bounds.

LXL_815520的博客 1504

iOS 开发必备tips

从事iOS开发多年,总结了一些常见的小技巧,希望能帮到你。疫情总会过去,充实自己,直面未来!

Spencer Yang的博客 652

iOS开发编码建议与编程经验

作者:乞力马扎罗的雪(GitHub)原文 在开发过程中,我们不仅要去看别人的代码,也要让别人看我们的代码。那么,有一个良好的编码习惯将会非常重要。下面将会罗列使用Objective-C来开发iOS的编码建议。 【1】任意函数长度不得超过50行。(其实很容易就超过50行,这就要考虑代码抽取了。) 【2】任意行代码不能超过80字符。(其实也很容易超过80字符,可以考虑多行显示,比如...

dongfuxiu4634的博客 105

iOS-宏和__attribute

原文 :http://www.cnblogs.com/Mike-zh/p/5143904.html 本文目录 iOS宏的经典用法Apple的习惯__attribute__ iOS宏的经典用法 1.常量宏、表达式宏 #define kTabBarH (49.0f) #define kScreenH [UIScreen mainScreen].bounds.s

like_sky_的博客 1101

iOS开发之宏的深度学习

宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译 优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行。而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似 乎对宏的使用和依赖并不多。但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加。   如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的

746573746D616E3030 612

iOS开发—使用GCD实现多线程

GCD是苹果公司为多核的并行运算提出的解决方案,工作时会自动利用更多的处理器核心。使用GCD,系统会完全管理线程,开发者无需编写线程代码。 GCD是Grand Central Dispatch 的缩写,它是基于C语言的。GCD会负责创建线程和调度学要执行的任务,由系统直接提供线程管理。GCD有两个核心概念:队列和任务。 1、队列 Dispatch Queue(队列),它是一个用来存放任务的集

shichunxue的博客 565

iOS 开发编码建议与编程经验

在开发过程中,我们不仅要去看别人的代码,也要让别人看我们的代码。那么,有一个良好的编码习惯将会非常重要。下面将会罗列使用Objective-C来开发iOS的编码建议。 【1】任意函数长度不得超过50行。(其实很容易就超过50行,这就要考虑代码抽取了。)   【2】任意行代码不能超过80字符。(其实也很容易超过80字符,可以考虑多行显示,比如有多个参数时,可以每个参数放一行。)可以在Xco...

hyb1234hi的专栏 171

iOS --- block的一些使用方法(反向传值)

最近有个朋友问我iOS中的block 是怎么用的, 我根据自己的所学把实际应用的一些写法告诉他了 因为我觉得这个主要是更注重实用性, 好了废话不多说,直接上实际的 ------ 实际上使用 通常是进行  block 传值,A 页面--> B页面 如果是正向的话,那么我们把B页面的值传给A就叫做 反向传值(或者叫做回调)。 步骤: 1. 谁发送消息,谁就写blo

withStyle的博客 5382
上一篇: 安卓运行时错误java.lang.NoClassDefFoundError分析
Wihatow
博客等级 码龄12年 5粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值