当前位置: 首页 > news >正文

分销网站有哪些深圳网站建设服务

分销网站有哪些,深圳网站建设服务,家用电脑做网站后台,你知道的2021内联函数 “内联函数”是一个很老的概念,在其他语言譬如C语言中也出现了。所谓“内联函数”指的是“有函数的结构,但不具备函数的性质,类似于宏替换功能的代码块”。 在实际应用中,常常把规模较小、逻辑较简单的操作定义成内联函数…

内联函数

“内联函数”是一个很老的概念,在其他语言譬如C++语言中也出现了。所谓“内联函数”指的是“有函数的结构,但不具备函数的性质,类似于宏替换功能的代码块”。

在实际应用中,常常把规模较小、逻辑较简单的操作定义成内联函数,定义内联函数只要在函数前面加上inline关键字修饰即可;站在编译器的角度,处理内联函数就是在每个它的调用点上“内联地”展开。假设有定义如下函数:

inline NSString * getNavigationTitleWithCount(int cnt) {return [NSString stringWithFormat:@"已选中%d项", (int)cnt];
}

则编译器对如下代码

UILabel *label = [UILabel new];
label.text = getNavigationTitleWithCount(0);

的处理,如同对如下代码代码的处理:

UILabel *label = [UILabel new];
label.text = [NSString stringWithFormat:@"已选中%d项", (int)0];

一句话说明,程序在“调用”内联函数时的开销和“调用”宏的开销是一样的,但内联函数显然比宏要强大一些,至少它保证了类型安全;相较于普通函数,“调用”内联函数没有“保护现场、push栈、pop栈等等”之类的开销。

内联函数的好处显而易见,但并不是所有函数都可以形成真正的内联函数。如上所述,定义一个内联函数只要在定义时加上inline关键字即可,但能否形成真正的内联函数,还要看编译器对内联函数体内部的定义的具体处理。

一般来说,内联函数定义的代码量逻辑简单、代码量小,并且属于那种频繁使用的代码块;内联函数不能使用循环语句,不能使用递归调用;

const的使用

在Objective-C代码中,经常需要定义一些常量指针,譬如AFNetworking中有如下代码:

extern NSString * const AFNetworkingReachabilityDidChangeNotification;
extern NSString * const AFNetworkingReachabilityNotificationStatusItem;

和其他语言一样,定义常量的关键字是const,但问题是常常不知道const该往哪里放,是这样NSString * const XXOO,还是NSString const * XXOO

其实,在Objective-C中还好一点,C/C++中const的各种使用姿势更难懂,如下:

const char * label1 = "";
char const * label2 = "";
char * const label3 = "";
const char * const label4 = "";

经常傻傻分不清楚。不过还好,我的记忆还算可以,记得本科C语言老师教过一种简单的记忆方法“const总是修饰其左边的东东,如果其左边没有东东,则修饰右边的东东”,如何理解?对于char const * label2而言,const的左边是char,所以const修饰的是char本身,即内容本身,所以表示“label1指向的内容是常量,不可变”;对于const char * label1而言,const左边没有东东,所以它修饰右边的东东,即char,所以表示“label2指向的内容是常量,不可变”;对于char * const label3,const左边的东东是*,所以修饰的是指针,即表示“label3指针本身是常量,不可变”,所以解释如下:

const char * label1 = ""; // 内容是常量,不可变
char const * label2 = ""; // 内容是常量,不可变
char * const label3 = ""; // 指针是常量,不可变
const char * const label4 = ""; // 指针和内容都是常量,不可变

这个判断方法同样适用于Objective-C,所以如下代码是没问题的:

// const的左边是NSString,修饰的是NSString对象,表示“NSString对象本身不可修改”(但指针可以)
static NSString const * testString = @"I am an iOS developer";- (void)viewDidLoad {[super viewDidLoad];testString = @"我是一个iOS开发者"; // 合法NSLog(@"%@", testString);   // print "我是一个iOS开发者"
}

但如下代码不合法:

// const的左边是*,修饰的是指针本身,表示testString地址值不可修改
static NSString * const testString = @"I am an iOS developer";- (void)viewDidLoad {[super viewDidLoad];testString = @"我是一个iOS开发者"; // 非法NSLog(@"%@", testString);
}

.mm文件

  • .m文件是Objective-C文件
  • .mm文件相当于C++或者C文件

Extension和Category

参考:http://blog.csdn.net/leikezhu1981/article/details/19091049

Compiler Directives

http://nshipster.com/at-compiler-directives/

http://blog.sunnyxx.com/2014/04/13/objc_dig_interface/

#pragma

nil/Nil/NULL/NSNull

http://nshipster.com/nil/

isEqual:和==

http://nshipster.com/equality/

转载于:https://www.cnblogs.com/FightingLuoYin/p/4519885.html

http://www.lbrq.cn/news/2391175.html

相关文章:

  • 科技网站颜色企业培训课程
  • 工信部网站域名查询优化大师免费版
  • 如何做移动端网站seo技术自学
  • 可以看那种东西的浏览器seo入门黑帽培训教程
  • 宁德城乡建设部网站网站域名查询ip
  • 给人做ppt的网站吗百度上传自己个人简介
  • 嘉兴网站搭建糕点烘焙专业培训学校
  • 网站后台管理模板psd外链发布网站
  • 单页面网站怎么做百度搜索引擎推广怎么弄
  • 网站推广智选刺盾云下拉东莞网站制作的公司
  • 网站优化3个关键词和10个关键词的区别企业网络营销策略分析案例
  • 下了网站建设免费职业技能培训网站
  • 做快消品看那些网站好百度推广全国代理商排名
  • 顺德企业手机网站建设百度一下就一个
  • 大型网站制作需要多少钱企业网络营销策略分析案例
  • 网站注入木马营销方案怎么写模板
  • wordpress 支付下载百度seo
  • wordpress仿站divcss百度推广联系人
  • 广州天河建站公司关键词筛选
  • 怎么在凡科上做网站如何让百度快速收录新网站
  • java做网站和asp做网站十大永久免费的软件下载
  • 网站备案有什么作用南宁哪里有seo推广厂家
  • wordpress仿逛海洋seo
  • 重庆网站开发设计公司中国站长素材网
  • 建设银行官方网站下载网络营销的策划流程
  • 石湾网站开发武汉大学人民医院东院
  • wordpress+展开淄博网站优化
  • 做家电家具回收用哪个网站好泉州seo按天计费
  • 怎么建立购物网站视频营销案例
  • 找人做的网站 没登录口对网络营销的认识800字
  • 【黑马SpringCloud微服务开发与实战】(三)微服务01
  • 告别项目混乱:基于 pnpm + Turborepo 的现代化 Monorepo 工程化最佳实践
  • 智能体之变:深度解析OpenAI ChatGPT Agent如何重塑人机协作的未来
  • 《汇编语言:基于X86处理器》第8章 高级过程(3)
  • 异世界历险之数据结构世界(二叉树-leetcode)
  • CAN通信驱动开发注意事项