Swift定义宏

作者: HeavenWong | 来源:发表于2016-07-18 14:47 被阅读94次
  • 因为之前iOS的开发一直用Objective-C, 所以习惯了C语言那种宏定义方式, Swift作为一款更加安全的语言, 放弃了C语言中的宏定义, 有效的防止预编译时代码宏替换的安全隐患, 但是也并非不能进行宏定义 -- 定义全局变量(听说类似Java)

swift中定义宏

  • 1.新建文件, 选择iOS -> Source -> Swift File
swift的.h文件
  • 2.同上, 名字你自己随心意, 毕竟不重要

  • 3.生成的会是一个.swift空文件, 默认应该会是Foundation框架, 自己修改为UIKit即可

swift.h文件
  • 4.设置宏定义
  • swift中的宏定义的意义:
    • 在swift中, 并非是预编译代码替换, 而是设置全局常量, 简单宏, 直接let 加常量名即可, 复杂的宏由于必须保证宏的代码的语句的合法性, 所以使用函数进行实现, 下面会举例说明:
简单宏定义
  • 但是这种宏定义远远不能满足我们的需要, 如果想要实现上面的那种, 通过对view.X, 获取到view.frame.origin.x的方式, 就要想其他的办法了, 因为直接let x = frame.origin.x这种方式明显不合法


    错误的宏定义

    - 就要通过函数来实现了, 把对象作为一个参数, 返回这个控件的具体属性(其实就是对frame的get方法的二次封装, 方便我们的使用),

正确:frame的get方法的二次封装
  • 5.宏定义的使用: 不需要导入,直接使用
Swift的宏定义在本质上并不应该称之为宏定义, 只是为了方便大家的理解, 实质上是一些全局常量和函数



OC中定义宏的方法很多

  • 因为C语言的机制下, 是在编译代码时将宏直接替换成你定义的代码, 所以这在实际使用中, 也是存有安全隐患的
  • 方法一: 直接在需要的类定义
 #define scrren_width [UIScreen mainScreen].bounds.size.width
  • 方法2: 创建.h文件, 导入吃文件就可以使用

  • 1.新建文件, 选择iOS -> Source -> Header File


    创建.h文件
  • 2.然后随便起个名字就好下一步下一步, 这里就不赘述了.

  • 3.生成的文件会是一个空的头文件(Header File)


    .h文件
    1. C语言的宏定义, 并不是很严谨, 任何代码段都可以进行宏定义, 甚至是无效的无序的乱码也可以.
.h文件定义宏
  • 原文摘自JianweiWang

相关文章

  • swift&&OC

    宏定义 OC中的宏定义 swift中的宏定义 OC中宏定义的方式,在swift中是不可用的,在swift中,宏定义...

  • Swift 宏定义与代码标记

    Swift中的”宏” 写Objective-C的时候常常会用到各种宏定义,但是Swift中貌似没有宏的这种定义,更...

  • Swift-OC混编总结

    一、swift怎么用oc定义的宏?1、在swift中,能直接使用定义为常量的宏,不能使用带有方法调用的宏,也不能使...

  • 宏定义 define

    // 宏定义 define // Swift 中宏定义被去除了,取代的是 let 或者 get 属性 // 例如 ...

  • OC&swift中的宏定义

    在使用OC和swift进行混编时,我们经常会需要在swift中使用OC中的宏定义,但是这些宏定义经常会提示无法找到...

  • 【OC】宏、const、static、extern

    宏 常用字符串,常见基本变量,可以定义为宏苹果推荐使用const,而不是宏(Swift没有宏定义) const 与...

  • swift 宏定义

    首页 创建一个swift项目 (swift4.0) 创建AppConst.swift 写宏 使用宏

  • Swift宏定义

    今天进行Swift编程,想用宏定义的时候,才发现熟悉的#define没了,真是扯在网上查了一下swift的宏,在此...

  • swift 宏定义

    两点:1、定义全局变量\函数2、“输出”全局函数在debug和release下设置 一、定义全局变量和全局函数 s...

  • Swift:宏定义

    一、简述 swift中并没有加入宏系统,C语言使用#define定义的基本常量在导入Swift时被Swift编译自...

网友评论

    本文标题:Swift定义宏

    本文链接:https://www.haomeiwen.com/subject/erwpjttx.html