Swift定义宏

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

swift中定义宏

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

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

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


    错误的宏定义

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

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



OC中定义宏的方法很多

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

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


    Swift定义宏_第4张图片
    创建.h文件
  • 2.然后随便起个名字就好下一步下一步, 这里就不赘述了.

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


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

你可能感兴趣的:(Swift定义宏)