IOS开发
关于IOS开发遇到问题和困惑
书弋江山
和光同尘,与时舒卷;戢鳞潜翼,思属风云,漆黑如夜,孑然踽行
展开
-
iOS 请求本地网络权限状态
本地网络权限原创 2023-06-08 14:03:48 · 2817 阅读 · 0 评论 -
Python 处理ios国际化文件,从strings读取到excel表
python脚本处理iOS国际化文件生成excel转载 2023-01-30 14:02:01 · 355 阅读 · 0 评论 -
SwiftUI高级用法
1.frame布局2. postion 控件偏移3.layoutPrority 布局优先级4 GeometryReader读取上层视图提供的文件大小5 preference,anchorPreference 从里向外传值6 aligentguid 自定义对其方式,不同父布局子控件实现对齐原创 2022-10-23 02:39:15 · 387 阅读 · 0 评论 -
swiftUI 属性包装 @State @ObservableObject @EnvironmentObject
//// Converter.swift// TestUIKitApp//// Created by bob bob on 2021/3/10.//import Foundationimport SwiftUI/* @propertyWrapper 属性包装,可以理解为装饰器模式,比如 @State,@Binding,@ObjectBinding,@EnvironmentObject1 init(initialValue:),wrappedValue 和 projectedVal原创 2021-03-10 16:03:04 · 452 阅读 · 1 评论 -
swiftUI 生成饼状图
swiftUI 生成饼状图//// RecycleRoundView.swift// TestUIKitApp//// Created by bob bob on 2021/2/23.//import SwiftUIenum Animal:String { case cat case dog case fish case horse case hamster case rabbit case bird var col原创 2021-02-23 15:35:24 · 559 阅读 · 0 评论 -
VideoToolbox进行视频编解码
解码部分//// TestVideoBox.swift// TestSwiftUIApp//// Created by bob bob on 2021/2/19.//import Foundationimport VideoToolboxclass Decoder1: NSObject { var width:Int32 = 480 var height:Int32 = 640 var decodeQueue:DispatchQueue = Dispatch转载 2021-02-20 14:56:46 · 822 阅读 · 0 评论 -
swift 关于闭包值捕获问题
闭包在其定义的上下文变量中捕获常量和变量,即使这些常量和变量的原域已经不存在了,闭包仍然可以在闭包函数体内引用和修改这些值。问题探究,到底原域消失之后,这些变量是复制了一份在闭包引用内,还是之前变量或者常量都复用func test(){ let myincr = increatmFunStr(Other: "BOB") print(myincr()) print(myincr()) print(myincr()) print(myincr(原创 2020-09-03 15:14:58 · 518 阅读 · 0 评论 -
Swift 学习笔记
1 字符拼接成字符串 let catCharacters:[Character] = ["c","a","t","!"] var catString = String(catCharacters) catString = catString ?? "如果变量为空,使用默认值" print(catString) let enclose...原创 2020-01-17 17:28:42 · 181 阅读 · 0 评论 -
Swift 常见协议
1 Hashable 协议class m1:Hashable{ var name:String = "" var age:Int?// swift 4.1 版本被废弃了 var hashValue:Int{ get{// 按照自己的规则生成 return name.hashValue * age.ha...原创 2020-01-17 14:49:11 · 438 阅读 · 0 评论 -
swift 替代print 方法更具体的日志输出
直接贴代码了,可以支持多参数,在别人基础上进行修改public func Fprint(_ items: Any..., separator: String = " ", terminator: String = "\n", _ file:String = #file, ...原创 2020-01-16 21:16:11 · 577 阅读 · 0 评论 -
Swift5.0 遇到的一些问题
使用Swift5.0 遇到不少问题,有些是Xcode的bug,比如Xcode 11.2 使用 show in finder 显示文件位置,就会卡死,swift编译本来就慢,算了不抱怨了1 通过setValuesForKeys保存字典数据,无法存储参考文章:https://blog.csdn.net/Sunsgne/article/details/79643270代码如下class Pers...转载 2019-11-13 21:04:51 · 482 阅读 · 0 评论 -
IOS 使用itms-services协议,服务端安装应用
最近开发的一个IOS项目需要不通过将APP发布到Appstore上直接安装到客户手机上,本来觉得苹果这么封闭的流程,应该不可以实现的吧,结果竟然还正能实现,这边主要是利用苹果自家的浏览器safari和itms-services协议,下面介绍下主要步骤和实现过程中遇到的问题。通过itms-services协议,可以通过safari浏览器直接在iOS设备上安装应用程序。利用这种方式,只要在内网布置一...原创 2018-09-21 16:33:36 · 10187 阅读 · 3 评论 -
IOS 工程文件project.pbxproj小结
工程文件project.pbxproj小结转载 2019-01-10 17:44:13 · 833 阅读 · 0 评论 -
Mac Security工具使用总结
Mac Security工具使用总结Security是Mac系统中钥匙串和安全模块的命令行管理工具,(图形化工具为Keychain Access.app)。钥匙串(Keychain)实质上就是一个用于存放证书、密钥、密码等安全认证实体的仓库,在计算机中保存为一个.keychain的文件,默认存放在以下目录中(使用这几个目录中的钥匙串时不需要写路径,直接用文件名即可,Security工具会自动搜索...转载 2018-12-28 15:17:58 · 3124 阅读 · 0 评论 -
使用python的mod_pbxproj 自动化 修改Xcode 工程
目前就先贴代码# coding=utf-8from mod_pbxproj import XcodeProjectimport osfrom foundation import *from mod_pbxproj import *import plistlibfrom pbxproj.pbxextensions import FileOptions# 修改工程def ch...原创 2018-11-30 14:05:39 · 5979 阅读 · 0 评论 -
IOS 使用NSURLProtocol 拦截网络请求实现缓存
最近项目需要实现一个WKWebview的缓存功能,然后想到通过拦截http/https请求,然后通过url字符串的MD5串来作为“Key” 存储和读取缓存,缓存数据使用YYCache 这个缓存框架还是很不错的,有通过链表实现的内存缓存,和数据库以及文件实现的磁盘缓存,这个就不多说了,具体可以github 上看源码,今天主要讲通过NSURLProtocol来实现拦截Http/https 中间可能牵涉...原创 2018-10-29 19:51:27 · 2304 阅读 · 0 评论 -
iOS 运行发现,view随着屏幕的变大整体放大的问题
记录一下工程中遇到的bug,项目基本完成时候,测试时候遇到在iphone6s plus 上字体和视图都被放大情况,这个问题我查看了自己的设置发现没问题,然后怀疑工程设置问题,后来看到下面文章解决遇到的问题,真是个奇葩问题,不过还好解决了 iOS 运行发现,view随着屏幕的变大整体放大的问题...转载 2018-09-15 16:56:23 · 1243 阅读 · 0 评论 -
IOS 关于web支付无法返回APP解决方案
使用WKWebview支付,使用的支付宝和微信支付,由服务器下单,app端拿到服务端下单数据加载,微信支付下单成功返回的是一个链接,支付宝支付下单成功返回的是一个html样式,加载方式也是不同的//拿到服务端下单数据之后 dispatch_async(dispatch_get_main_queue(), ^{ if (weakSelf.paytype == WeChatPay...原创 2018-09-12 19:26:00 · 1606 阅读 · 0 评论 -
IOS 使用反射进行游戏聚合多渠道
通过传入的字符串来获取类名和函数名调用相应的函数,这样做又一个好处是可以不导入相应的文件,而且完成编译//调用类函数Class cls = NSClassFromString(@"John"); SEL sel0 = NSSelectorFromString(@&原创 2018-08-20 11:47:58 · 536 阅读 · 0 评论 -
python 自动化生成IOS的图标
每次上架之前都要生成十几个图片感觉无聊麻烦,考虑使用脚本处理 脚本使用python 和一部分shell 处理的,python部分主要是使用PIL库处理图片,和调用shell脚本,shell 主要是操作文件#coding=utf-8import os ,threadingfrom PIL import Imageimport subprocessimport jsonclass Im...原创 2018-05-12 14:33:00 · 581 阅读 · 0 评论 -
从Swift深入理解函数派发机制
深入理解 Swift 派发机制译者注:之前看了很多关于 Swift 派发机制的内容, 但感觉没有一篇能够彻底讲清楚这件事情, 看完了这篇文章之后我对 Swift 的派发机制才建立起了初步的认知.正文一张表总结引用类型, 修饰符和它们对于 Swift 函数派发方式的影响.函数派发就是程序判断使用哪种途径去调用一个函数的机制. 每次函数被调用时都会被触发, 但你又不会太留意转载 2017-06-19 09:54:42 · 833 阅读 · 0 评论 -
IOS 关于支付宝web支付不同实现
由于支付宝web支付返回的是一个带请求链接的表单,所以直接加载html形式,不要使用loadrequest [self.webView loadHTMLString:self.requestUrlStrs baseURL:nil];使用WKwebView方式遵守WKNavigationDelegate协议-(void)webView:(WKWebView *)webView decid...原创 2018-07-11 21:28:39 · 757 阅读 · 0 评论 -
IOS 调试小工具显示内存和CPU 使用率
关于网络上下行的有点问题,不准确 CPU 和内存 基本是准确的,有需求的可以添加FPS 相关的#import <Foundation/Foundation.h>@interface SyStemSourceTool : NSObject+(instancetype)sharedInstance;-(void)startShowSystemState;@end#i...原创 2018-07-12 14:48:18 · 2254 阅读 · 0 评论 -
ios WKWebView Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified
最近在使用WKwebview(UIWebView 占用内存太大,而且还有内存泄漏问题)加载一个服务端的网页时候遇到这个问题,首先你要看一下你的Htttps 和Http 设置如下 发现没用,网上找了好多资料,大部分说先 [self.webView loadRequest:request]; 然后在addSubView 我发现也没用,后来又设置NSHTTPCookie 如下NSMutabl...原创 2018-07-16 17:01:55 · 33796 阅读 · 6 评论 -
iOS解决两个静态库的冲突 duplicate symbol
场景:解决TencentOpenAPI.framework与ZbarSDK中 _base64_encode 函数的冲突后来在网络上搜寻,删除掉 Other Linker Flag 的 -all_load 就可以解决静态库冲突的问题,但是这样做的话,会使一些外部的静态库,使用objc扩展函数(catagory)的方法失效。例如BaiduMapApi如果是有些库使用到了扩展函数(ca...转载 2018-07-26 20:38:02 · 834 阅读 · 0 评论 -
IOS 使用SCYCacheURLProtocol和YYCache做Web缓存
一:前言:项目中整个一tab页因为需求变成了加载webView,没网情况下会一片白。。很多APP无网显示的是一张图片,笔者强迫症,坚决做到最好的用户体验,于是缓存了整个webview; 1. 想通过加载HTMLSting字符串缓存webView是不可行, [self.webView loadHTMLString:HTMLSting baseURL:nil];想走这条路的哥们这里说下,肯定是不行的...转载 2018-08-01 20:23:59 · 500 阅读 · 0 评论 -
IOS 多线程GCD 和线程锁,读写锁
关于IOS多线程1.线程的概念1个cpu执行的cpu命令列为一条无分叉路径,即为线程 如果这种无分叉路径有多条,这就是多线程 在学习操作系统的时候学过,cpu的抢占机制–时间片轮转 所以多线程程序的某个线程可以和其它多个线程反复进行上下文切换,这就看上去像1个cpu核能够并列执行多个线程一样2.多线程导致的一些问题...原创 2017-01-11 23:01:12 · 2467 阅读 · 0 评论 -
IOS sqlite3数据库的使用
打开和创建数据库-(void)openFileWith:(NSString*)tableName{ NSArray *array=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path=[array objectAtIndex:0]; NS原创 2017-01-13 10:01:02 · 613 阅读 · 0 评论 -
IOS 获取设备型号
+ (NSString *)getCurrentDeviceModel:(UIViewController *)controller{ int mib[2]; size_t len; char *machine; mib[0] = CTL_HW; mib[1] = HW_MACHINE; sysctl(mib, 2, NULL, &len, NULL,原创 2017-01-22 13:05:22 · 527 阅读 · 0 评论 -
IOS Block使用
IOS Block的使用-(UIButton *)Btn{ if (!_Btn) { _Btn=[UIButton buttonWithType:UIButtonTypeCustom]; [self.view addSubview:_Btn]; [_Btn mas_makeConstraints:^(MASConstraintMaker *ma原创 2017-02-01 10:20:09 · 257 阅读 · 0 评论 -
IOS 动画
- (void)drawRect:(CGRect)rect { /* UIRectFill(rect);填充矩形函数 UIRectFrame(frame);描边函数 UiBezierPath 绘制常见路径类 */ //为当前图形上下文设置填充的颜色 [[UIColor whiteColor]setFill]; UIRectFi原创 2017-02-04 14:38:52 · 283 阅读 · 0 评论 -
IOS 实现类似安卓的Toast
-(void)showMessage:(NSString *)message duration:(NSTimeInterval)time{ CGSize screenSize = [[UIScreen mainScreen] bounds].size; UIWindow * window = [UIApplication sharedApplication].keyWindow;原创 2017-02-04 14:39:38 · 451 阅读 · 0 评论 -
IOS KVO基础
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; self.student = [Student new]; self.student.name = @"John"; self.student.age = 12; //原创 2017-02-06 17:23:39 · 239 阅读 · 0 评论 -
cocoapods 升级 0.3.9 --> 1.2.0
检查本地镜像 gem source -l2 不是 https://gems.ruby-china.org ,都删除 “` gem sources –remove https://rubygems.org/ - 3 添加镜像 ```gem source -a https://gems.ruby-china.org``` - 4 可能会遇到ruby版本不够的问题。RubyGems 官网。原创 2017-02-14 11:57:39 · 276 阅读 · 0 评论 -
IOS一些框架
上下拉刷新控件MJRefresh –仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。可以自定义上下拉刷新的文字说明。(推荐)SVPullToRefresh –下拉刷新控件4500+star,值得信赖CBStoreHouseRefreshControl –一个效果很酷炫的下拉刷新控件3600+starBreakOutToRefresh –转载 2017-02-16 09:46:19 · 930 阅读 · 0 评论 -
IOS 添加下拉刷新
1,添加控件//添加下拉刷新控件-(void)setupRefresh{ UIRefreshControl*refControl=[[UIRefreshControl alloc]init]; [refControl addTarget:self action:@selector(RefreshData:) forControlEvents:UIControlEventValueC原创 2017-02-20 16:58:49 · 552 阅读 · 0 评论 -
IOS 单例模式
第一种添加互斥锁方式生成,这样做可以避免两个对象同时访问或者修改数据导致出错 第二种使用GCD方式创建的//第一种方法+(instancetype)sharedInstance{ @synchronized (self) { if (singlePattern==nil) { singlePattern = [[self.class alloc]i原创 2017-02-23 17:12:45 · 319 阅读 · 1 评论 -
IOS 流布局
//生成流布局UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];//设置滚动方向 layout.scrollDirection = UICollectionViewScrollDirectionVertical;//生成view视图,类似于Tabview UICollecti原创 2017-02-23 17:23:01 · 395 阅读 · 0 评论 -
IOS NSCopying
首 先,从copy开始说,简而言之,copy的目的就是生成一个新的实例,然后把其成员都按原实例赋值。对于非指针型的成员,比如BOOL, int, float,这样的赋值可以直接进行。但是对于指针型的数据,比如Objc中用到的对象,就有Deep Copy和Shallow Copy的区别——这个和在C++中的基本上是一样的:是生成新的成员对象,或是指向同一成员对象。了 解了这点以后,再看看Copy在Ob原创 2017-02-24 09:59:24 · 360 阅读 · 0 评论 -
IOS 线程锁
一、atomic介绍 github对应Demo:https://github.com/Master-fd/LockDemo 在iOS中,@property 新增属性时,可以增加atomic选项,atomic会给对应对setter方法加锁,相当于 - (void)setTestStr:(NSString *)testStr{ @syn转载 2017-02-24 15:57:00 · 577 阅读 · 0 评论