ios设计模式--委托模式
目录(一)协议(二)id类型(三)适配器模式(四)实例(五)委托模式的深入理解Cocoa Touch框架下使用大量使用委托(delegation),根据苹果公司的文档,delegate是Cocoa Touch框架所采用的委托模式的一种形式。
理解委托,所需要的准备
(一)协议
Objective-C的协议,类似于C++的抽象类,JAVA的接口。其具体定义如下
@prot ...
解密ios响应链的工作原理
目录事件响应链的工作原理响应者对象的特点自定义事件处理事件传递和事件响应事件拦截事件传递到父视图自定义事件响应链总结事件响应链是 iOS 开发中的一个核心概念,它描述了系统将用户交互事件传递给最适合处理该事件的对象的过程。理解事件响应链的机制对于开发高质量的应用程序至关重要。本文将深入探讨事件响应链的工 ...
iOS上架App Store详解(图文)
iOS上架App Store详解(图文)
上架基本需求资料
1、苹果开发者账号(如还没账号先申请- 苹果开发者账号申请教程)
2、开发好的APP
通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestFlight测试然后提交审核的完整流程!
上架App Store审核分7步进行。
1、安装iOS上架辅助 ...
ios开发者账号到期了如何续费(详细步骤)
添加图片注释,不超过 140 字(可选)
iOS开发者账号在到期的前一个月即可续费,如果到期没有续费APP将会下架,在App Store无法搜索
1、登录苹果开发者中心
编辑
添加图片注释,不超过 140 字(可选)
有这个红色提示说明该续费了
编辑切换为居中
...
swift 错误处理do catch try try!使用详解
在swift中 如果我们要定义一个表示错误类型非常简单,只要遵循Error协议就可以了,我们通常用枚举或者结构体来表示错误类型,枚举可能用的多些,因为他能更直观的表达当前错误类型的每种错误细节。
//
// AboutError.swift
// learn_swiftUi
//
// Created by liuan on 2020/9/4.
// Copyright © 2020 liuan. All righ ...
Swift Package 技巧及混编兼容问题详解
目录创建 Package使用 Package维护 Package版本控制本地调试修改Package 之间的依赖混编问题target 拆分引用以及和 cocoapods 的兼容问题创建 Package
mkdir somePath
cd somePath
swift package init (--type library/executable/empty/system module)
其中,type 的四种类型分别对应:
library: 库(默认)executable: ...
Swift重构自定义空等运算符 “??=” 实例
目录一、思路来源二、示例三、源码四、总结一、思路来源
最近在做 Flutter 开发时发现一个之前没注意到的空等运算符 “??=”,代表左边为空时,才会把右边的值赋给左边,然后返回左边的变量值;常用于避免多次赋值的情况;发现非常实用,于是给 swift 也自定义一个使用,最终如下;
二、示例
b1 获取 a1 的值 ...
Swift 重构重载运算符示例解析
目录一、思路来源二、基础类型 String 为例重载乘法运算符源码实现:三、对象类型 UIEdgeInsets 为例重载加法运算符将源码实现:四、总结一、思路来源
研究自定义运算符的时候,又重新看了一下重载运算符,觉得挺有意思的,随手封装了几个。
二、基础类型 String 为例
重载乘法运算符
将一段字符串重复 n 次拼接在一起;
l ...
Flutter 模型动态化赋值研究分析
目录一、需求来源二、实现思路三、使用示例四、实现源码总结一、需求来源
之前无论是做 iOS 开发还是 JS 开发,模型动态赋值都是一个非常重要且高频使用的特性。进行 flutter 开发时需要用到这个特性但是不支持就感觉特别难受,遂想自己实现这个特性,中间经过三个月的思考学习,实现了一个初步方案(大家如果有更好的方案 ...
NSMutable 对象的坑解决分析
目录背景测试代码_set +0x10 处是个啥?结论NSMutable 对象共性问题?背景
最近处理了两个崩溃,都是在 NSMutableSet 调用 enumerateObjectsWithOptions 的时候发生的,崩溃类型悬垂指针。 查看崩溃堆栈里面的业务代码,发现 set 有 removeObject 和 addObject 的操作,按照经验来讲这大概率是一个多线程操作 set 造成的。最 ...
appuploader 上架详解大全(上)
Appuploader 常见错误及解决方法
问题解决秘籍
遇到问题,第一个请登录苹果开发者官网 检查一遍账号是否有权限,是否被停用,是否过期,是否有协议需要同意,并且在右上角切换账号后检查所有关联的账号是否工作正常,apple账号的邮箱也是个重要的地方,当有ipa上传,账号有发生变化,被停用,apple经常发送一些邮 ...
appuploader 上架详解大全(下)
2022 ios APP最新开发测试教程
1.本文详细介绍最新的在windows上进行ios app开发编译打包安装到手机测试的完整流程。介绍ios开发经常遇到的问题和解
决方法,包括ios开发证书,ios开发描述文件等。
2.Apple开发常用的三个网址:
开发者中心: https://developer.apple.com/account/
App 管理中心: https:/ ...
iOS App上架App Store详细教程
编辑切换为居中
添加图片注释,不超过 140 字(可选)
注意:下载AU后需安装java8运行环境才能启动;安装好了最新Java8运行环境,解压AU软件包,无需安装,Windows 64位系统点击appuploader.exe启动;如果是Linux/Windows 32位系统或Mac系统双击appuploader.jar即可启动;直接用苹果账号即可 ...
iOS开发蓝牙技术应用增加无线连接功能
目录正文Core Bluetooth框架蓝牙相关概念使用Core Bluetooth框架实现蓝牙功能扫描蓝牙设备连接蓝牙设备发现服务和特征读写数据总结正文
蓝牙技术已经成为了现代生活中不可或缺的一部分。iOS开发者可以使用Core Bluetooth框架来集成蓝牙功能到他们的应用程序中。本文将介绍iOS开发者如何使用Core Bluetooth框架在他们的应用 ...
IOS开发自定义Button的外观和交互行为示例详解
目录正文定制 Button 的外观使用 ButtonStyle 定制交互动画使用 PrimitiveButtonStyle 定制交互行为系统预置的 Style注意事项为按钮添加 Trigger总结正文
通过 Style 改变组件的外观或行为是 SwiftUI 提供的一项非常强大的功能。本文将介绍如何通过创建符合 ButtonStyle 或 PrimitiveButtonStyle 协议的实现,自定义 Butto ...
IOS开发Objective-C Runtime使用示例详解
目录前言一些关键字消息传递 (Messaging)KVO关联对象 (Associated Objects)AOP(Method Swizzling)其它前言
Runtime 是使用 C 和汇编实现的运行时代码库,Objective-C 中有很多语言特性都是通过它来实现。了解 Runtime 开发可以帮助我们更灵活的使用 Objective-C 这门语言,我们可以将程序功能推迟到运行时再去决定怎 ...
一步一腳印的 iOS App 上架和更新流程
APP Uploader APP开发助手-iOS APP上架到App Store的辅助工具,解决iOS APP上架繁琐费时的情况,帮助跨平台APP开发者上架苹果应用,在没有配置Mac苹果机的情况,实现iOS证书申请,创建iOS开发者证书、iOS发布证书等各类证书,iOS开发者在Windows、Linux或Mac系统中上传IPA到App Store,简化iOS APP上架流程!在Windows pc中 ...
IOS开发者自带弱网测试工具界面说明NETWORK LINK CONDITIONER
弱网测试的思路
弱网功能测试:2G/3G/4G、高延时、高丢包
无网状态测试:断网功能测试、本地数据存储
用户体验关注:响应时间、页面呈现、超时文案、超时重连、安全及大流量风险
网络切换测试:WIFI → 4G/3G/2G → 网多状态切换
IOS手机的开发者自带了弱网模拟工具,以下是界面说明,便于大家使用时自行配置使用。 ...
iOS SDK开发
一款好用且设计充分的 SDK 必须要遵循以下 4 条基本原则,即:
1、SDK 安全,稳定2、统一的开发规范3、Library 小而精4、不依赖第三方 SDK安全,稳定:考虑到 SDK 是需要嵌入到 App 里面去的,所以 SDK 最重要的特性就是安全性,不会因为乱开放接口而导致 App 数据泄露;其次重要的是 SDK 的稳定性, SDK 的 Crash 如果没 ...
Swift HTTP加载请求Loading Requests教程
目录正文遵循HTTPLoading协议创建Result用法正文
到目前为止,我们已经看了一个简单的Request/Response的结构体和实现。接下来,我们来讨论一下发送请求和接收响应。
如果我们回想一下第一节,我们会用HTTP回调给他,我们发送了一个请求,并且最终得到了一个响应(忽略Error)没有任何“任务”或者代理亦或其他 ...