美文网首页
一个新工程的创建流程

一个新工程的创建流程

作者: 小朴同学 | 来源:发表于2019-02-19 11:30 被阅读2次
    1. 文件结构

    文件的结构以主目录按照模块分类,内目录按照业务分类的模式创建

    • Classes (主体代码所在)
      • AppDelegate
      • 模块名称例如:(Home)
      • Common (公共类)
      • Login (登录模块)
      • Setting (全局设置)
    • Expand (扩展)
      • Network (网络模块)
      • Database (本地数据库管理)
      • File (文件管理)
      • Tool (工具类)
      • Category (类别)
      • Const (常量)
      • Macros (宏定义)
    • Resource (资源文件)
      • Image
      • Plist
      • Other
    • ThirdParty (第三方资源文件)
    1. pod及pod的库

    CocoaPods 是一个很方便的管理外部资源库的工具

    1. git以及git忽略文件

    git在进行文件管理时,应该抓住核心代码,忽略其他的文件

    创建.gitignore文件
    Pods/
    TC.xcworkspace/
    TC.xcodeproj/xcuserdata/
    TC.xcodeproj/project.xcworkspace/xcuserdata/
    即忽略对pod下的相关文件和其他三个相关路径下的文件的管理
    
    1. 全局文件配置
    • 文件前缀的设置

      如图设置即可把my改成你想要设置的前缀例如:TRR

      [图片上传失败...(image-7f79ac-1550546957773)]

    • 全局文件.pch的设置

      • 先创建一个PCH的文件
      • 然后设置 点击项目名->Build Settings->搜索"prefix header"->双击prefix header右侧 出现输入框输入.pch文件所在的路径
        $(SRCROOT)/TC/Classes/Setting/Header.pch /Users/zsk/Desktop/tc-ios/TC/Classes/Setting/Header.pch 解释如下桌面上有个tc-ios文件夹,此文件夹下的工程名为TC,TC下有文件夹Classes下Setting文件中有Header.pch文件。
        image
    • http的网络访问

      • http默认在app中无法使用
      • 如下配置:info.plist -> 点击information Property List 点击加号添加App Transport Security Settings 字典类型-> 点击App Transport Security Settings 点击加号添加Allow Arbitrary Loads Bool类型 值修改为YES
      • 最终效果如下
        image
    1. 全局宏文件

    宏的定义,以方便使用而尽可能少的策略添加,能使用静态变量去处理的就设置为静态变量,不要动不动就用宏设置

    // 调试用的信息用DLog   一般用这个
    // define DLog and ALog
    #ifdef DEBUG
    #   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
    #else
    #   define DLog(...)
    #endif
    
    // 运行时想获得的信息用ALog 即使发行了,也想获得的数据
    // ALog always displays output regardless of the DEBUG setting
    #define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
    
    // 一些简单方法的宏定义
    // 主屏幕大小的获取
    #define ScreenFrame             [UIScreen mainScreen].bounds
    #define ScreenWidth             [UIScreen mainScreen].bounds.size.width
    #define ScreenHeight            [UIScreen mainScreen].bounds.size.height
    #define AppNewVersion           [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"]
    #define OnePX                   1/[UIScreen mainScreen].scale
    
    // 动态的确定你所要设置的颜色的RGB
    #define RGBAM(r,g,b,a)           [UIColor colorWithRed:r/255.0   green:g/255.0   blue:b/255.0    alpha:a]
    #define RGB(r,g,b)               [UIColor colorWithRed:r/255.0   green:g/255.0   blue:b/255.0    alpha:1.0]
    // 16进制的颜色转化为正常的颜色
    #define COLOR_WITH_HEX(hexValue) [UIColor colorWithRed:((float)((hexValue & 0xFF0000) >> 16)) / 255.0 green:((float)((hexValue & 0xFF00) >> 8)) / 255.0 blue:((float)(hexValue & 0xFF)) / 255.0 alpha:1.0f]
    
    // 版本检测
    #define IOS11_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11.0)
    #define IOS10_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0)
    #define IOS9_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0)
    
    // 设备检测
    // 判断是否为 iPhone 4S
    #define iPhone4S [[UIScreen mainScreen] bounds].size.width == 320.0f && [[UIScreen mainScreen] bounds].size.height == 480.0f
    // 判断是否为 iPhone 5S
    #define iPhone5S [[UIScreen mainScreen] bounds].size.width == 320.0f && [[UIScreen mainScreen] bounds].size.height == 568.0f
    // 判断是否为iPhone 6S
    #define iPhone6S [[UIScreen mainScreen] bounds].size.width == 375.0f && [[UIScreen mainScreen] bounds].size.height == 667.0f
    // 判断是否为iPhone 6Plus
    #define iPhone6Plus [[UIScreen mainScreen] bounds].size.width == 414.0f && [[UIScreen mainScreen] bounds].size.height == 736.0f
    
    // 弱引用/强引用
    #define WeakSelf(type)  __weak typeof(type) weak##type = type;
    #define StrongSelf(type)  __strong typeof(weak##type) strong##type = weak##type;
    
    // 获取图片资源
    #define GetImage(imageName) [UIImage imageNamed:[NSString stringWithFormat:@"%@",imageName]]
    
    // 获取当前语言
    #define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
    
    // 回到主线程do something
    #define DISPATCH_MAIN_THREAD(doSomeThing) dispatch_async(dispatch_get_main_queue(), ^{ \
    doSomeThing\
    });\
    
    1. 全局静态变量

    顾名思义:静态不变的,需要全局使用的变量

    //苹方字体
    static NSString * const PingFang  = @"PingFangSC-Regular";
    
    // 字典数据库名字
    static NSString * const DictName = @"dict.db";
    // 头像图片名字
    static NSString * const AvtarName = @"avtar.png";
    // 背景图像名字
    static NSString * const BackgroundName = @"background.png";
    
    // test
    static NSString * const LoadingName = @"loading.gif";
    
    不要写成
    #define PingFang    @"PingFangSC-Regular"
    

    相关文章

      网友评论

          本文标题:一个新工程的创建流程

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