普通视图
iOS小技能:给debugserver添加task_for_pid权限,以便调试从AppStore中获取的App。
iOS小技能:__attribute__的应用
iOS小技能:消息发送的步骤(利用类型编码加快消息分发)
iOS小技能:动态地给类添加新的方法、实例变量、属性。
iOS动态库的注入原理
iOS逆向小技能:Cydia Substrate的组成部分、编写Tweak的步骤
iOS设备日志查看工具:syslog、socat
iOS逆向小技能:Theos的安装
iOS逆向小技能:使用substrate及runtime进行hook(定时检测app是否开启)
iOS小技能: 处理接口的暂无数据
这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战。
引言
在日常开发中经常涉及数据列表的查询,处理服务侧无数据返回的情况或者网络异常的手段是iOS必备小技能。
I 处理暂无数据
网络请求失败,业务逻辑错误,返回数据为空都是需要处理界面的显示,推荐使用暂无数据进行提示。
![]()
1.1 用法
if (weakSelf.viewModel.listDataArray.count == 0) {
[weakSelf.viewModel.ShowNoviewSubject sendNext:QCTLocal(CRM_nodata_Info)];
}else{
[weakSelf.viewModel.hidenNoviewSubject sendNext:nil];
}
1.2 核心实现
V层初始化暂无数据视图:将视图添加到tableView,这样可以不影响下拉刷新和上拉加载
- (CRMNoDatatView *)NoView{
if (nil == _NoView) {
CRMNoDatatView *tmpView = [[CRMNoDatatView alloc]init];
_NoView = tmpView;
[self.tableView addSubview:_NoView];
__weak __typeof__(self) weakSelf = self;
[_NoView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(weakSelf.tableView.mas_centerY).offset(kAdjustRatio(k_noteViewH));
make.width.equalTo(weakSelf);
make.left.right.bottom.equalTo(weakSelf.tableView);//tableView
}];
}
return _NoView;
}
- (void)ShowNoview:(NSString *)title img:(NSString*)imgName
{
self.NoView.title = title;
self.NoView.imgName = imgName;
[self.tableView bringSubviewToFront:self.NoView];
}
V层监听C层的事件
[self.viewModel.hidenNoviewSubject subscribeNext:^(id _Nullable x) {
weakSelf.NoView.hidden = YES;
}];
[self.viewModel.ShowNoviewSubject subscribeNext:^(id _Nullable x) {
weakSelf.NoView.hidden = NO;
[weakSelf ShowNoview:x img:@"img_kongbai_zanwu"];
}];
暂无数据视图的实现
// 显示暂无数据图片
- (UIImageView *)imageV{
if (nil == _imageV) {
UIImageView *tmpView = [[UIImageView alloc]init];
_imageV = tmpView;
_imageV.contentMode = UIViewContentModeScaleAspectFit;
_imageV.image = [UIImage imageNamed:@"icon_wushuju"];
[self addSubview:_imageV];
__weak __typeof__(self) weakSelf = self;
[_imageV mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(weakSelf);
make.centerY.equalTo(weakSelf).offset(-kAdjustRatio(35));
make.left.equalTo(weakSelf).offset(kAdjustRatio(33));
make.right.equalTo(weakSelf).offset(kAdjustRatio(-33));
}];
}
return _imageV;
}
//显示暂无数据文本
- (UILabel *)label{
if (nil == _label) {
UILabel *tmpView = [[UILabel alloc]init];
_label = tmpView;
[self addSubview:_label];
__weak __typeof__(self) weakSelf = self;
[_label mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(weakSelf);
make.top.equalTo(weakSelf.imageV.mas_bottom).offset(kAdjustRatio(22));
_label.textAlignment = NSTextAlignmentCenter;
_label.font = kPingFangFont(15);
_label.textColor = rgb(51,51,51);
}
return _label;
}
// 更新图片数据
-(void)setImgName:(NSString *)imgName{
_imgName = imgName;
if (imgName.length<=0) {
return;
}
[self.imageV setImage:[UIImage imageNamed:imgName]];
self.reloadbtnView.hidden = !self.isShowReloadBtn;
// }
}
- (void)setTitle:(NSString *)title{
_title = title;
self.label.text = title;
}
see also
更多内容请关注 #小程序:iOS逆向,只为你呈现有价值的信息,专注于移动端技术研究领域。
iOS小技能:视图置顶(让一个View至于最顶端, 避免被其他子视图遮盖住)
iOS15适配本地通知功能
iOS接入开屏广告教程 : 以腾讯优量汇为案例
程序员必备小技能:mac文件备份和清理、常用工具的安装和配置
iOS入门常见问题汇总
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
引言
给新手看的入门基础篇
I、入门常见问题
1.1 请问iOS入门的话,xcode虚拟机就可以了?
使用Xcode的模拟器只是真机方面的功能无法调试而已,比如app的扫一扫功能涉及到的摄像机、录音亦或者接入三方SDK的时候也最好在真机调试测试。
1.2 请问包管理就是cocoa pods吧?
是的,另外Carthage也可以管理iOS依赖库。
Swift Package Manager 是 Apple 为了弥补当前 iOS 开发中缺少官方组件库管理工具的产物。相较于其他组件管理控件,他的定义文件更加轻松易懂,使用起来也很 Magic,只需将源码放入对应的文件夹内,Xcode 就会自动生成工程文件,并生成编译目标产物所需要的相关配置。同时,SPM 与 Cocoapods 相互兼容,可以在特性上提供互补。
github.com/apple/swift-package-manager 相关文档:developer.apple.com/documentati…
iOS第三方库管理规范,以Cocoapods为案例进行讲解
1.3 用于开发iOS的Mac最低配置需要什么样的?
![]()
![]()
8G内存有点小,最好16G。 不过这个性价比还不错
II 常用第三方库注意事项
2.1 极光消息推送
定期更新SDK,尤其系统大版本更新的时候。
![]()
2.2 toast 提示
设置toast显示时长 (针对SVProgressHUD第三方库)
[SVProgressHUD setMinimumDismissTimeInterval:0.4];// 设置最小显示时长
[SVProgressHUD setMaximumDismissTimeInterval:0.5];//
III、流程保证质量(规范+测试+设计)
kunnan.blog.csdn.net/article/det…
see also
9 月 14 日起 App Store Connect 已经开放 iOS 15 和 iPadOS 15 App 的提交,同时苹果宣布自 2022 年 4 月起,所有提交至 App Store 的 iOS 和 iPadOS app 都必须使用 Xcode 13 和 iOS 15 SDK 构建。 Xcode 13 需在 macOS 11.3 及以上版本运行:
更多资讯和服务请关注#小程序:iOS逆向 ,只为你呈现有价值的信息,专注于移动端技术研究领域。