系统如何调用super方法

系统默认只会在构造函数中,自动调用super.init()方法,而且是在所写方法的尾部进行调用.

在其他函数中,如何需要调用父类的默认实现,都需要手动去实现.

如果在构造函数中使用KVC,一定要先调用父类的super.init()方法.

自定义Log的方法

以下语法为swift3的最新语法

  • 获取打印所在的文件

    • let file = (#file as NSString).lastPathComponent
  • 获取打印所在的方法
    • let funcName = #functon
  • 获取打印所在的行
    • let lineNum = #line

swift中有全局函数的概念:即将函数定义在项目中任意一个类文件的class外面,就可以在项目中的任何地方均可以调用这个方法.

自定义Log方法就是基于swift的全局函数来实现的.

另外,自定义log的时候,要考虑到在debug环境下进行打印,而在release环境下不需要进行打印.

由于swift中没有宏定义的概念,所以需要在项目的Build Settings->Other Swift Flags中为Debug添加一个标记,例如"-D DEBUG".

这样,在代码中,可以直接通过"DEBUG"这个关键词,来判断当前的运行环境是否为debug模式.

下面为自定义的Log方法:

func WJQLog<T>(_ messsage : T, file : String = __FILE__, funcName : String = __FUNCTION__, lineNum : Int = __LINE__) {

    #if DEBUG

    let fileName = (file as NSString).lastPathComponent

    print("\(fileName):(\(lineNum))-\(messsage)")

    #endif
} // 调用代码如下:
WJQLog("test")

解释:

  • 考虑到自定义Log要打印方法所在的文件/方法名/行号,以及自定义的内容,同时考虑调用的便捷性,所以要使用默认参数,无需调用者传递太多的参数.
  • 使用泛型,可以让调用者传递任意的类型,进行打印Log的操作.
  • #if DEBUG和#endif用来判断,只有在debug环境下,才执行Log里面的代码进行打印操作.在release环境下,不进行打印.

Swift中自定义Log打印方法的更多相关文章

  1. xcode中自定义log打印

    打印内容包括 在哪个文件中 ? 在哪个方法中? 将要执行什么操作?   // 此打印实现前提: // 1.在.pch文件中实现自定义log打印方法,log名换为LCLog // 2.定义一个宏obje ...

  2. Swift中自定义打印方法

    // 1.获取打印所在的文件 let file = ( #file as NSString).lastPathComponent // 2.获取打印所在的方法 let funcName = #func ...

  3. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  4. jquery遍历标签中自定义的属性方法

    在开发中我们有时会对html标签添加属性,如何遍历处理 <ul> <li name="li1" sortid="nav_1">aaaaa ...

  5. 第四十二篇、自定义Log打印

    1.在Xcode 8出来之后,需要我们去关闭多余的日志信息打印 2.在开发的过程中,打印调试日志是一项比不可少的工程,但是在iOS 10中NSLog打印日志被屏蔽了,就不得不使用自定义Log 3.去掉 ...

  6. Swift Tips - 在 Swift 中自定义下标访问

    Untitled Document.md input[type="date"].form-control,.input-group-sm>input[type="d ...

  7. logback的使用和logback.xml详解,在Spring项目中使用log打印日志

    logback的使用和logback.xml详解 一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分 ...

  8. android-----JNI中的log打印

    1. 导入log头文件 在你使用的 .c/ .cpp 文件中 导入 log.h 头文件 #include<android/log.h> 2.在Android.mk 中 加上 LOCAL_L ...

  9. android-----JNI中的log打印【转】

    本文转载自:http://blog.csdn.net/zengraoli/article/details/11644815 1. 导入log头文件 在你使用的 .c/ .cpp 文件中 导入 log. ...

随机推荐

  1. delete删除多表

    1.DELETE a.*, aa.* FROM student a, person aa WHERE a.id = aa.city_id AND a.name = '' 2.DELETE a.*, a ...

  2. 如何利用SecureCRT连接Ubuntu12.0.4

    环境描述:虚拟机网络选择NAT连接方式,Ubuntu的版本是Ubuntu12.0.4 1. 先做一个测试,假设现在系统还没有装ssh,用secureCRT连接Ubuntu是出现下面的界面. 实际上,这 ...

  3. VC菜菜鸟:建立第一个基于Visual C++的Windows窗口程序

    建立第一个基于VisualC++的Windows窗口程序: 发表于:http://blog.csdn.net/it1988888/article/details/10306585 a)执行命令:新建 ...

  4. Steam游戏黑屏与游戏直接安装方法

    黑屏原因主要是360禁止了反作弊进程,解决方法: Steam游戏目录: Steam\steamapps\common\*** 例如黎明杀机,备份时候可直接备份该目录下 Dead by Daylight ...

  5. 虚拟机下ubuntu的minicom使用指南

    整理自ubuntu下的minicom的使用 minicom是linux下串口通信的软件,它的使用完全依靠键盘的操作,虽然没有"超级终端"那么易用,但是使用习惯之后读者将会体会到它的 ...

  6. 移动应用产品开发-android开发项目记录

    今天主要在做app前端开发,做了一个资讯列表和资讯详情,主要模仿网易新闻来做,页面布局简单,但java代码和实现比较麻烦 毕竟才开始做,研究的不那么透彻,也不是很熟练 用心去做,专注开发,今天也算作出 ...

  7. Android 使用XmlPullParser解析xml

    这里我们假设要解析的xml文件名为:test.xml,我们将其放在assets路径中. xml文件内容为: <?xml version='1.0' encoding='utf-8' standa ...

  8. WEB 开发异常:java.lang.ClassNotFoundException

    某个类明明是有的,可是eclipse 启动tomcat服务器运行web项目,出现如题异常. java.lang.ClassNotFoundException 信息: Set web app root ...

  9. 程序异常捕获库 - CrashRpt

    CrashRpt.dll用来在应用程序出现异常crash时,捕获到错误. 并收集出错信息: MiniDump文件.硬件信息.系统信息.出错信息.进程信息.服务信息.驱动信息.启动信息.软件列表.端口信 ...

  10. css全局设置

      /***** 全局设置 *****/ body,h1,h2,h3,h4,h5,h6,p,form,ul,ol,li,dt,dl,dd,th,td,label,bottom,input,textar ...