swift小技巧之Swift中全局常量的书写

Objective-C

  在OC中经常会用到一些静态常量。 全局变量的声明有两种方式:

  • 一种是在.h文件用extern声明,然后在.m文件定义,在调用这个全局变量的文件需要引入该文件的.h文件,例如:
    /**
    .h文件
    */
    extern NSString * const string;
    
    /**
    .m文件
    */
    NSString * const string = @"全局变量";
  • 另一种方式是在.m文件定义,在需要用到的地方通过extern引入,不需要引入头文件,例如:
    /**
    .m文件
    */
    NSString * const string = @"全局变量";
    
    /**
    用到的地方
    */
    extern NSString * const string;

Swift

  • 在Swift中,我们可以利用Struct来实现全局常量。 如
    struct Constants {
        static let someNotification = "TEST"
    }
    在使用的时候就可以直接点出来。
    print(Constants.someNotification)
  • 在具体使用中Struct 也可以这样:
    struct Key {
        struct NotificationKey {
            static let Welcome = "kWelcomeNotif"
        }
    
        struct Path {
            static let Documents = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
            static let Tmp = NSTemporaryDirectory()
        }
    }
    使用的时候调用
    print(Key.NotificationKey.Welcome)
    print(Key.Path.Documents)
    print(Key.Path.Tmp)
  • 例如AppColor类中,将一些基本设置写好,在使用的时候可以直接调用
    struct AppColor {
        private struct Alphas {
            static let Opaque = CGFloat(1)
            static let SemiOpaque = CGFloat(0.8)
            static let SemiTransparent = CGFloat(0.5)
            static let Transparent = CGFloat(0.3)
        }
    
        static let appPrimaryColor =  UIColor.white.withAlphaComponent(Alphas.SemiOpaque)
        static let appSecondaryColor =  UIColor.blue.withAlphaComponent(Alphas.Opaque)
    
        struct TextColors {
            static let Error = AppColor.appSecondaryColor
            static let Success = UIColor(red: 0.1303, green: 0.9915, blue: 0.0233, alpha: Alphas.Opaque) 
        }
    
        struct TabBarColors{
            static let Selected = UIColor.white
            static let NotSelected = UIColor.black
        }
    
        struct OverlayColor {
            static let SemiTransparentBlack = UIColor.black.withAlphaComponent(Alphas.Transparent)
            static let SemiOpaque = UIColor.black.withAlphaComponent(Alphas.SemiOpaque)
            static let demoOverlay = UIColor.black.withAlphaComponent(0.6)
        }
    }

总结

  Swift提供的Struct 的用法与通过点语法访问属性用法一致,方便的是不需要再去声明创建一个类,并且可以将 Struct 分类归类的写在一个地方。这无疑要比OC中大段大段的Prifix文件要优雅的多

posted on 2021-07-18 13:12  梁飞宇  阅读(2052)  评论(0)    收藏  举报