自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 C# 扩展方法

最近查看QFramework源代码时,对一块的语法很疑惑,明明一个类没有被引用,为何此类的方法被调用了呢。细查之下,原来是C#的扩展语法的概念。扩展方法是向现有的类型中添加方法,而不用创建新的派生类型。案例一:向string类中添加新的方法,用于为字符串添加前缀案例二:QFramework 简化版本扩展方法有如下要求:https://lsnumber1.github.io/2022/12/03/C-%E6%89%A9%E5%B1%95%E6%96%B9%E6%B3%95/https://learn.m

2022-12-03 20:51:25 2214 2

原创 iOS适配Unity-2019

Xcode工程适配Unity 2019+

2022-11-26 21:24:31 2214

原创 xcode 打包报错:_isPlatformVersionAtLeast

前言xcode打包时报错,错误描述为:Undefined symbol:_isPlatformVersionAtLeast解决方式把xcode升级为13,即可。

2019-10-22 17:01:42 3085

原创 Object-C替换自定义占位符"${}"

前言oc字符串替换一般使用系统提供的%@、%d、%u等,但是有的时候根据需求我们需要自定义占位符,如下:我们上报服务器数据时,需要向Facebook的渠道做一个转发,eventName是转发的事件名称,其中${level}是需要解析本地数据level,如level = 10,则eventName是为trackleveldone_10. //此数据是服务器下发给SDK的,告诉SDK转发的渠道、...

2019-08-16 09:46:45 511

原创 OC 反射实现(runtime)集合Admob案例

前言因需要做一个广告的聚合包,聚合包里包含了各个广告平台的SDK,当需要时,把SDK引入,不需要时把SDK删除即可,不需要动逻辑代码。比如:当需要接入admob时,只需要把admob的库引入项目中即可,不需要另外写代码,当不用admob时,把admob的库删除,此时,也不用修改代码。因此,实现中,就不能直接用admob的对象,需要通过反射去实现。Java可以用反射做,object-c、swi...

2019-08-10 15:08:55 230

原创 IOS OC IPA内购流程

IOS 内购分为四种商品类型:消耗品项目非消耗品项目自动续期订阅非续期订阅基本实现流程添加支付监听[[SKPaymentQueue defaultQueue] addTransactionObserver:self];2.删除支付监听在界面销毁处,添加删除支付监听,或者在 deallo方法处销毁 [[SKPaymentQueue defaultQueue] remov...

2019-07-31 14:03:10 1339

原创 IOS项目,以workspace的形式,管理多个项目

做SDK开发时,需要把SDK的工程和测试工程放在一个workspace下,这边可以方便对SDK的包进行断点测试,以下为对现有的两个工程放入同一个workspace的流程。新建项目选择 “Workspace”如果之前打开了要加入workSpace的项目, 把其关闭掉。打开新建的workspace,选择“File” -> “Add Files to workspace名称”,找到要加入...

2019-07-09 09:44:46 878

原创 Xcode 修改Copyright的组织信息

在xcode中新建文件时,会自动写上Organization信息,修改Organization的方式如下:选择工程名称选择TARGETS在最右边窗口,选择Organization,并输入内容如下图所示:效果:...

2019-07-03 09:21:34 2248 1

原创 python 自动打 .framework/.a 文件,合并真机、模拟器包

前言因项目中需要频繁打SDK包(.a / .framwork),所以考虑用python写一个脚本,自动化打包,并且把生成真机包、模拟器包进行合并。实现方式import osimport shutil# framework 的名字FrameworkName = 'FtAdsPlatform'# 项目路径Build_Path = '/Users/Documents/IOSSDKPr...

2019-05-05 18:02:57 216

原创 Unity和IOS相互通信方式、生成unitypage包

前言本内容讲解IOS、Unity项目通信的方式,以及IOS如何生成一个unitypager包,供Unity安装使用。Demo: https://github.com/LSnumber1/UnityAndIOSMessageDemoUnity调用IOS方法创建一个Xcode工程依次点击File->New->Project选择 Cocoa Touch Static Libr...

2019-03-31 12:04:43 2909 1

原创 Error: IOS iPhone has denied the launch request(Xcode10.1)

前言环境:xcode 10.1, iphone:12.1.4开发运行中,报了iPhone has denied the launch request错误,可以从以下两种方式进行尝试解决。修改Executable打开Product -> Scheme -> Edit Scheme然后选择Executable的选项为:Ask on launch修改钥匙串双击下钥匙串,修...

2019-03-25 12:02:00 430

原创 oc中copy、strong、weak、assign解析

NSMutableString“_”方式调用赋值 NSMutableString *mOriginMutableString = [[NSMutableString alloc] initWithString: @"原始数据"]; _mCopyMutableString = mOriginMutableString; _mStrongMutableString = mOri...

2019-03-22 17:08:10 913

原创 崩溃:Property follows Cocoa naming convention for returning 'owned' objects

定义属性时,报了这个错误,如下:错误信息Property follows Cocoa naming convention for returning 'owned' objects报错位置@interface ViewController () @property(copy,nonatomic)NSMutableString *copyMutalbesString;@end...

2019-03-21 18:22:29 1016

原创 利用数组实现简化的List

前言复习下数组的使用方式,仿照List用oc实现下数组的增删改查功能初始化时给定数组的容量插入数据删除数据根据下标返回数据代码声明头文件​ 头文件中包含了6个对象方法,如下:initWithCapacity用于初始化数组容量find根据下标查找数据remove根据下标删除数据insert根据下标插入数据add尾部追加数据...

2019-03-21 18:21:27 270

原创 获取View宽高的四种方式(避免获取的为0)

前言在Activity获取控件宽高时,有时获取的为0,无法获取正确的信息,原因是View的measure过程和Activity的生命周期不是同步的,也就是说在Activity走了onCreate、onStart、onResume周期后,并不一定View能测绘完成。解决方式在onWindowFocusChanged方法中做监听 @Override public void o...

2019-03-11 17:07:27 1132

原创 图解Android启动模式

启动模式分类standard: 标准模式此为系统默认的启动模式,每次启动Activity均会新建一个实例。此种模式下,谁启动了它,它就加入谁的任务栈中。如:A 启动了 B,那么B就加入到A所属的任务栈中。 A和B的生命周期如下。非Activity的Context启动Activity,会报错,如下: Caused by: android.util.AndroidRuntimeE...

2019-03-09 21:03:32 150

原创 图解 Activity生命周期

Activity生命周期总概括onStart: 是从Activity是否可以见的角度来说,可见但不是前台onResume:是从Activity是否前台角度,普通情况周期流程第一次启动启动后退出(返回键)打开新的Activity如果新打开的Activity是透明主题,则不会调用onStop方法返回原来Activity特殊情况的流程A 打开 B,生命周期...

2019-03-07 16:04:40 181

原创 图解Android消息传递机制(Looper、Handler、MessageQueue)

LooperLooper为消息循环器, 不停的取出MessageQueue中的消息,并把获取的消息分发下去。是MessageQueue和Handle交互的桥梁。提供prepare()方法prepare方法中通过sThreadLocal(new Looper()) 初始化了Looper, 并在Looper的构造方法中,new MessageQueue()创建了messageQueuelo...

2019-03-04 11:56:32 537

原创 Room : Database Migration doesnt properly handle ALTER TABLE migration迁移失败

前言使用Room 数据库,进行升级时(增加新的列),报了Room Database Migration doesnt properly handle ALTER TABLE migration 这个错误,记录下解决过程解决流程确定版本号(VersionCode)是否增加了确定数据库版本(version)是否增加了如果数据库改变了,迁移是否做了如果增加新的列,不是TEXT 类型,如do...

2018-11-29 09:54:45 654

原创 RecycleView获取所有的ViewHolder

获取ViewholderRecyclerView.ViewHolder holder = recyclerView.findViewHolderForAdapterPosition(index);如果holder为空的话,从缓存中取 //缓存池 RecyclerView.RecycledViewPool pool = recyclerView.getRecycledViewPoo...

2018-11-15 11:54:10 7428

原创 App Bundle (Error while parsing the flags: Syntax error: flags should start with -- )

前言App Bundle 打出的.aab包,解析成apks格式时,报错,错误信息如下 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 Error while parsing the flags: Syntax error: flags should start with -- (/app/release/release/a...

2018-11-15 10:00:18 1615

原创 Gson 解析键值不固定的字段

前言开发中,有时候后台返回的json格式键值名是不固定的,如{ "red" : "1", "yellow" : "1" } , 可能只有red、yellow这两个键值名,也可能有好几个.解决方式这种情况下,我们可以声明为Map<String,String>,然后Gson就可以解析了。...

2018-11-04 17:29:46 1781

原创 Android 自定义TextView 更改字体

Android 自定义TextView 更改字体前言步骤前言项目中经常使用到自定义字体,如果每个都在代码中进行设置,就会比较麻烦,所以采用在xml中直接自定以设置字体。最终调用效果: xmlns:app="http://schemas.android.com/apk/res-auto" //通过app:typeface 设置字体 <americanshop.com.amer...

2018-11-04 17:16:56 6768 1

原创 TBS腾讯(X5)内存泄露解决方案(com.tencent.smtt.sdk.WebView)

场景xml中使用com.tencent.smtt.sdk.WebView时,频繁进入退出,报出CommodityDetailActivity中的mFragments存在内存泄露。分析实际代码中CommodityDetailActivity类中,我自己没有用到mFragments,所以怀疑使用到的第三方搞的鬼,而这个页面第三方, 就有个腾讯的WebView。所以也就怀疑是这个问题了。把web...

2018-11-02 11:06:12 11092

原创 Android sha1加密(RequestBody 加密)

前言服务器要求对请求进行sha1加密,请求用的Retrofit,所以要对请求的RequestBody进行加密获取shapublic class EncryptUtils { public static String getSHA(String info) { byte[] digesta = null; try {// 得到一个SHA-1的消息摘要...

2018-10-19 09:32:44 1527

原创 Android 验证邮箱、手机号是否有效

前言通过android的工具库Patterns类实现。实现验证邮箱Patterns.EMAIL_ADDRESS.matcher(email).matches();验证手机号Patterns.PHONE.matcher(email).matches();另外还支持IP、url等验证。...

2018-10-17 18:26:24 2567

原创 Android Studio: Caused by: com.android.build.api.transform.TransformException: NullPointerException

错误信息测试编译并打Debug包./gradlew assembleDebug --stacktrace2. 编译并安装debug包./gradlew installDebug --stacktrace发现编译成功,并且手机上安装上了。解决方式把Instant Run关闭,原因未知。...

2018-10-09 15:23:39 640

原创 Swift 写入Excel表格(libxlsxwriter)方式

前言之前写过一种写入Excel表格的方式(https://blog.csdn.net/qin_shi/article/details/82772668 ),是通过LibXL库实现的,这个是官方的库,需要购买,否则生成的数据里会被追加脏数据。基于这种情况,另外找了一个库libxlsxwriter,这个是开源库,可以实现对Excel的基本操作。引入库流程引入libxlsxwriter使用C...

2018-09-30 09:34:10 3387

原创 oc打静态库(.a)供 Unity调用流程

选择新建Cocoa Touch Static Library创建WordSliceIOS.h 文件#import <Foundation/Foundation.h>@interface WordSliceIOS : NSObject-(void)playVibrate;@end创建WordSliceIOS.m文件#import "WordSliceIOS.h...

2018-09-20 13:56:44 1904

原创 Swift 写入Excel表格

需求项目中需要把数据写入Excel表格中。引入流程下载Excel的开发包 http://www.libxl.com/download.html把下载的LibXL.framework文件放入xcode工程中修改xcode的配置信息BitCode为No,Other Linker Flages 追加-lstdc++桥接文件引入头文件#import <LibXL/libxl....

2018-09-19 15:18:17 2563

原创 OC 调用 Swift 方法

1.新建Swift文件之前做以下设置 2.创建Swift文件后,会提示创建桥接文件,点击创建3.Swift 类import Foundationclass RealmManager: NSObject { override init() { super.init() } @objc func getConins() -> Str...

2018-09-06 11:47:34 7050

原创 Unity和IOS互调方法

说明一下内容是IOS客户端需要做的操作,不涉及Unity的操作。Unity调用IOS方法1.RegisterMonoModules.h 文件里填写相应的方法void getLevelAndCoin(); 如果需要调用传递返回值的方法,也需要写成void类型 RegisterMonoModules.mm 不需要写对一个的方法2.UnityAppControll...

2018-09-06 11:02:17 1971

原创 Swift 打印Realm数据库的秘钥方法

Realm数据的秘钥是Data类型encryptionKey?.toHexString()encryptionKey为秘钥,调用toHexString方法即可。

2018-09-05 15:45:30 378

原创 Swift 计算两个日期的相隔多少天

概述给定两个日期,计算两个日期相隔多少天。列子主要利用dateComponents实现NSCalendar.current.dateComponents(components:Set<Calendar.Component>, from: <Date>, to: <Date>) let dateFormatter = Date...

2018-09-04 16:34:33 3737

原创 Swift 4 reduce函数

概述用于做序列元素的累加,如数组元素的累加。func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result initialResult为初始化的值,也是闭包Result第一次运行的值...

2018-09-04 10:04:38 7594

原创 Fabric 创建分组后,导致数据无法上报

问题项目换到Fabric另外一个分组后,导致数据无法上报。解决方式关闭XCode、模拟器从设备中删除App,并重启执行 rm -rf ~/Library/Developer/Xcode/DerivedData打开项目,并清理项目(⌘+Option+Shift+K)修改Fabric相关ID编译项目(⌘B)运行项目...

2018-07-27 12:03:15 317

原创 UITextView 设置同一段文字,多个文字颜色

利用NSMutableAttributedString实现预览图如下 创建 NSAttributedString let subjectString1 = NSAttributedString(string: "CLUD: ", attributes: [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttrib...

2018-07-20 15:03:34 1593

原创 UIScrollView 手势冲突,子View无法获取touches事件解决方法

问题UIScrollView 下的子View,手势滑动中,无法获取touchesBegan等事件。解决方式自定义MyUIScrollView,继承自UIScrollView,复写touchesBegan等事件,在此事件中把获取的滑动事件等传递下去。class MyUIScrollView: UIScrollView { var callback: TouchesCal...

2018-07-06 16:00:06 1874

原创 Java 接口 抽象类 选择

具体实现中接口优于抽象类。但是如果后期需要频繁的改动基本功能,就需要考虑使用抽象类,因为接口一旦改动会影响所有的实现,而抽象类可以避免这个问题。抽象类可以实现接口,进而结合两者的优点。...

2018-07-04 15:47:31 151

原创 Swift UIView获取坐标

获取Sizeview.frame.sizewidthview.frame.size.widthheightview.frame.size.heightxself.view.frame.origin.xyself.view.frame.origin.yleftself.view.frame.origin.xright...

2018-06-22 15:52:37 4634

apktool工具

反编译工具,用于反便于软件使用,比如,编译android apk,里边有详细步骤,简单易懂

2015-07-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除