OC工程的文档组织 2023-04-26 周三

2023-04-25  本文已影响0人  勇往直前888

简介

由于工作需要,项目有一次重写的机会。
有换Swift的想法,不过还是放弃了,熟悉了OC,有进度压力,还是选择了不变。
能抄的还是抄了,不过有些还是做了调整。
当然,如果没有进度压力,还是推荐使用Swift,OC真的到了该退出的时候了。

最外层结构

企业微信截图_8661ea7e-5649-4cb1-a773-1c7838dee03c.png

主要模块

本着尽量精简,文件夹尽量少的原则,一个项目下来(这个可以说是最简单的项目了),以下几个文件夹还是有必要的。每个文件夹都配上一个同名的头文件,将对外接口统一结合起来,方便使用。

企业微信截图_6ec073a9-6124-407a-9957-253e0e767e1f.png

Page

页面的文件夹,一般是一个页面一个子文件夹。比如下面就是登录页面的内容。

企业微信截图_6df7f2a6-fec1-4f29-be54-4dc3136b8fda.png
/// 显示登录对话框
+ (void)presentShow {
    UIStoryboard *board = [UIStoryboard storyboardWithName:@"WGBLoginStoryboard" bundle:nil];
    
    WGBLoginViewController *loginVC = (WGBLoginViewController *)[board instantiateViewControllerWithIdentifier:@"WGBLoginViewController"];
    loginVC.modalPresentationStyle = UIModalPresentationFullScreen;
    
    [[WGBControllerTool getRootViewController] presentViewController:loginVC animated:YES completion:nil];
}

使用的时候就非常方便,比如:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    
    /// 检查登录,如果没有登录,显示登录对话框
    if (![WGBLogin isLogin]) {
        [WGBLogin presentShow];
    }
}
/// 是否登录
+ (BOOL)isLogin {
    return [WGBLoginManager shareInstance].isLogin;
}

Service

企业微信截图_39e7184d-6ed1-4697-ab1e-b5abc625aabc.png
#ifndef WGBServiceHeader_h
#define WGBServiceHeader_h

/// 个人信息
#import "WGBUserInfo.h"

/// 上传记录
#import "WGBUploadRecord.h"

#endif /* WGBServiceHeader_h */

Model

企业微信截图_f5092bdf-6caf-4798-9ae6-a8b963642533.png

ToolKit

企业微信截图_e56a2bef-fc59-4e61-bf12-f2b61c6aa5b8.png
/// 是否为空
+ (BOOL)isEmpty:(nullable NSArray *)array {
    if (array == nil) {
        return YES;
    }
    if (array.count < 1) {
        return YES;
    }
    return NO;
}

/// 是否不为空
+ (BOOL)isNotEmpty:(nullable NSArray *)array {
    return ![self isEmpty:array];
}

BaseKit

企业微信截图_f9e5911d-4174-4b91-9066-0beb1863673a.png
#pragma mark - life cycle

/// 打印页面退出信息
- (void)dealloc {
    NSLog(@"页面:%@ 退出(dealloc)", NSStringFromClass([self class]));
}
上一篇 下一篇

猜你喜欢

热点阅读