自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 收藏
  • 关注

原创 ios 关联对象 Associated Object

在Objective-C中,关联对象(Associated Object)是通过runtime函数实现的动态对象关联技术,允许开发者在运行时将任意对象关联到其他对象上。关联对象并不是直接存储在对象本身中,而是通过一个全局的关联对象哈希表来存储的。因此,关联对象的实际存储位置是由Objective-C的runtime库来管理的,而不是存储在对象本身中。函数时,Runtime会将关键字和关联对象的指针保存到全局的关联对象哈希表中。函数时,Runtime会根据对象和关键字从哈希表中查找关联对象的指针并返回它。

2023-04-12 22:43:53 178

原创 ios开发 block 为什么使用copy修饰

具体来说,Block 在创建时可能存储在不同的内存区域(栈或堆)中,而在将其赋值给对象或作为函数或方法的参数时,需要确保 Block 存储在堆中,以便在调用时能够正常执行。如果 Block 存储在栈中,则在函数或方法返回后,Block 对象所在的内存区域将被释放,从而导致程序崩溃或者产生其他未定义的行为。这样做的原因是 Block 在被赋值给对象或作为函数或方法的参数时,会自动执行一次。因此,在 iOS 开发中,当将 Block 赋值给对象或作为函数或方法的参数时,需要使用。属性时,会自动执行一次。

2023-04-12 09:40:12 838

原创 ios copy和strong区别

在使用 Objective-C 时,选择正确的修饰符对于正确的内存管理和避免常见的错误非常重要。修饰符声明的 NSString 对象,它将被复制一份并分配给新的变量或属性。表示对对象的一种强引用,增加对象的引用计数,确保对象不会在其仍然被需要时被释放。表示对对象的一种深复制,创建一个独立的对象并将其所有权传递给新的变量或属性。修饰符时,对象会被复制一份并分配给新的变量或属性,新的对象和原始对象是独立的。修饰符时,对象会在其拥有它的对象存在的时候一直被保持,直到其所有者被释放。用于创建对对象的强引用,而。

2023-04-11 17:47:09 348

原创 ios对象归档解档

对象归档和解档的过程中,需要实现NSCoding协议中的两个方法:encodeWithCoder:和initWithCoder:。对象归档是将一个对象及其属性转换为二进制数据的过程,而对象解档则是将二进制数据还原为原始对象及其属性的过程。在Objective-C中,可以使用对象归档和解档来将一个对象的状态保存到文件中,或者从文件中恢复对象的状态。注意,在归档和解档时,如果对象中包含了其他对象,则需要在对应的对象中也实现NSCoding协议,以便可以正确地保存和还原对象的状态。

2023-04-11 14:33:22 171

原创 GCD 并发队列来实现多读单写

通过以上步骤,我们实现了多读单写的功能,多个线程可以同时读取共享数据,但是只有一个线程能够写入数据。iOS 的多读单写指的是多个线程可以同时读取共享的数据,但是只有一个线程能够写入数据。1.定义一个并发队列和一个串行队列,用于处理读操作和写操作,分别为 readQueue 和 writeQueue。4.实现写操作,使用 writeQueue 中的同步方法来执行写入操作,这样保证只有一个线程能够写入数据。3.实现读操作,使用 readQueue 中的异步方法来执行读取操作,这样多个读操作可以同时进行。

2023-04-10 20:58:49 394

原创 git push出现[email protected]: Permission denied (publickey) 解决办法

git push出现[email protected]: Permission denied (publickey)

2022-11-30 18:07:36 2195

原创 Flutter 列表组件ListView 网格布局组件GridView

持垂直和水平方向展示。通过一个属性就可以控制列表的显示方向。列表布局是我们项目开发中最常用的一种布局方式。Axis.horizontal水平列表。Axis.vertical垂直列表。

2022-11-28 11:05:51 960

原创 iOS消息转发机制

消息转发机制objective调用方法实质上是给对象发送一个消息.对于实例方法,每个实例的 isa 指针指向着对应类对象,而每一个类对象中都一个对象方法列表。对于类方法,每个类对象的 isa 指针都指向着对应的元对象,而每一个元对象中都有一个类方法列表。方法列表中记录着方法的名称,方法实现,以及参数类型,其实 selector 本质就是方法名称,通过这个方法名称就可以在方法列表中...

2020-03-22 17:17:50 221

原创 基于JWT的Token认证机制实现

1.概念JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息.一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名.2.token的创建2.1maven依赖<dependency> <groupId>io.jsonwebtoken</groupId> <a...

2020-02-19 16:15:31 287

原创 WKWebView与vuejs交互

0.js点击事件,oc监听事件和参数onLineCollectionFun:function () { console.log('在线收款') window.webkit.messageHandlers.OnLineCollectionFun.postMessage({'methodsID':'1'});},1.#import &lt;WebKit/WebKit.h&...

2018-04-17 15:02:44 2876 1

原创 iOS 银行卡号合法性判断

输入银行卡号的时候,一般为了卡号的合法性会做一个判断,使用了Luhn算法 Luhn算法步骤: 1、从卡号的末位开始,逆向将奇数位相加; 2、从卡号的末位开始,逆向将偶数位先乘2,如果得到的数为两位数则减9,再将得到的数求和; 3、将奇数位的和与偶数位的和相加得到的数除以10,如果可以被10整除,则这个卡号是合法的。 举个栗子: 卡号:6227612145830440(网上搜的

2018-03-29 15:33:53 601

原创 iOS 银行卡号密文形式展示

#import @interface BankModel : NSObject@property(nonatomic,assign) NSInteger bankId;@property(nonatomic,copy) NSString* bankImg;@property(nonatomic,copy) NSString* bankName;@property(nonatomic,c

2018-03-29 15:24:40 1182

原创 Vue解决安卓4.4不兼容的问题

1.npm安装npm install babel-polyfillnpm install es6-promisepackage.json中会出现"babel-polyfill": "^6.26.0","es6-promise": "^4.1.1",2.main.js引入import 'babel-polyfill'import Es6Promise from 'es6-promise'req

2018-03-27 16:54:40 3499

原创 tab 导航

pod ‘TYPagerController’pod update使用#import <UIKit/UIKit.h>#import "TYTabPagerController.h"@interface CreditRepayController : TYTabPagerController@end#import "CreditRepayController.h"#import "MBP

2018-03-06 14:07:35 340

原创 UIWebView和vue.js通信(json数据)

iOS接收Vue的json数据 methods:{ //选择某一个银行 hotBankFun:function (bank) { console.log(bank) hotBankFunClick(bank) } }- (void)w...

2018-03-05 09:56:30 1714

原创 JavaScript面向对象程序设计

一、对象JavaScript的简单数据类型包括数字、字符串、布尔值、null值和undefined值。其他所有的值都是对象。数字、字符串和布尔值“貌似”对象,因为它们拥有方法,但它们是不可变的。JavaScript中的对象是可变的键控集合(Keyed collections)。在JavaScript中,数组时对象,函数是对象,正在表达式是对象,当然,对象自然也是对象。对象是属性的集合,每一个属性具有

2018-03-01 13:37:48 173

原创 iOS Delegate

1.1.定义@protocol ChooseCouponDelegate <NSObject>- (void)tableViewDidSelectCoupon:(HWCouponModel*)coupon;@end1.2.属性@interface HWCouponView : UIView@property(nonatomic,weak) id<ChooseCouponDelegate>del

2018-03-01 13:25:11 860

原创 vue监听滚动事件 实现某元素吸顶或者固定位置显示

最近写VUEapp项目,需要实现某个部位吸顶的效果。即,页面往上滑动,刚好到达该部位时,该部分,固定在顶部显示1、监听滚动事件利用VUE写一个在控制台打印当前的scrollTop,首先,在mounted钩子中给window添加一个滚动滚动监听事件mounted () { window.addEventListener('scroll', this.handleScroll)}然后在metho...

2018-02-27 11:56:30 1067

原创 html 弹出层

&lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt; &lt;style type="text/css"&gt; #login { display:none; border:1em..

2018-02-27 11:36:27 4000

原创 02.27 vue布局 collectionView

&lt;!--模块2热门银行--&gt;&lt;div class="hot-bank"&gt; &lt;div class="hot-bank-title"&gt; &lt;div class="left"&gt;热门银行&lt;/div&gt; &lt;/div&gt; &lt;div class=&

2018-02-27 10:25:43 691

原创 02.26 组件间传值(controller-view)

1.控制器&lt;template&gt; &lt;div class="hwd-content" v-cloak&gt; &lt;div class="bgBox"&gt; &lt;img :src="bgImg[0].src" class="bgBoxImage"&gt; &lt;/

2018-02-26 10:33:05 172

原创 02.26 创建一个vue组件

1.Result.vue&lt;template&gt; &lt;div class="hua-result-view" @click="cardDidClick"&gt; &lt;div class="result"&gt; &lt;div class="title"&gt;您得到了

2018-02-26 10:21:24 238

原创 02.26vue布局 tableViewCell左右布局(文字显示两行)

&lt;div class="xyk-strategy"&gt; &lt;div class="title-box"&gt; &lt;mt-cell title="信用卡攻略" value="查看更多" is-link&gt;&lt;/mt-cell&gt; &lt;/div&gt; &lt;div&

2018-02-24 14:13:06 2107

原创 照片选择

1.弹框,-选择照片来源 - (void)changImage{ UIAlertController * vc = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet ]; UIAlertAction * act01

2018-01-03 09:44:14 280

原创 objective-c block

1.cell定义blocktypedef void(^LLDefaulButtomActionBlock)(AddrListCell* cell); @property(nonatomic,copy) LLDefaulButtomActionBlock editBlock;- (void)editAddressButtonActionBlock:(LLDefaulButtomActionBlo

2017-12-29 13:28:43 284

原创 UICollectionView组标题

1.//设置collectionView头视图的大小static NSString *sectionHeaderID =@”sechederview”;flowLayout.headerReferenceSize=CGSizeMake(KScreenWidth,40); 2.//注册分组头视图[collectionView registerClass:[UICollecti

2017-12-28 16:49:59 1457

原创 iOS与vue交互(OC传值到Vue.js)

1、原生调用vue.js 某个vue组件下的方法。 methods:{ hwajax:function (strings) { this.tokenString=strings; } } mounted:function () { window.hwajax ...

2017-12-26 18:37:23 9272 2

原创 实现UICollectionViewCell自适应文字宽度和选中项目

1.collectionView- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { for (AutoCellModel * model in self.dataArray) { model.isSelected

2017-12-21 15:37:00 3268 1

原创 vue三级界面使用better-scroll滚动

<van-nav-bar title="商品详情" leftText="返回" leftArrow @click-left="backAction" />

2017-12-18 18:23:02 502

原创 iOS 导航栏 搜索

设置导航栏的titleView为搜索框 UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth -120, 40)]; UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, title

2017-12-13 10:00:36 827

原创 HWTabBarController选中事件

-(BOOL)tabBarController:(UITabBarController )tabBarController shouldSelectViewController:(UIViewController )viewController { }返回值YES,直接通过。返回值NO拦截objective-c if (![viewController isKindOfClass:[UINavi

2017-12-08 11:13:22 233

原创 localStorage使用

1.登陆存储tokenif(window.localStorage){ const tokenString = JSON.stringify(this.hwdToken) window.localStorage.setItem('hwdtoken',tokenString); Toast({ message: '登录成功!', position: 'm

2017-12-07 10:30:13 353

原创 iOS与vue交互(点击网页传值到OC)

1.初始化UIWebView - (void)viewDidLoad { [super viewDidLoad]; UIWebView*webV=[[UIWebView alloc] initWithFrame:[UIScreen mainScreen].bounds]; _webView=webV; webV.backgroundColor=[UICo...

2017-12-07 10:28:44 3237 2

原创 自定义UITableView

自定义UITableView1.controllerSpecialSaleView *view = [[SpecialSaleView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight-64-44-49)];view.backgroundColor = [UIColor redColor];[self.view a

2017-12-06 10:36:43 418

原创 自定义UICollectionView+HeaderView

自定义collectionView-header 控制器view初始化view RecommendGridView* homeGridView = [[RecommendGridView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight-64-44-49)]; homeGridView.backgroundCo

2017-12-05 09:37:22 2344 1

原创 better-scroll使用

<li class="menu-item" ref="menuList" v-for="good in goods"> {{good.name}}

2017-11-24 17:56:18 1121

原创 json数据模拟

/** * Created by l on 17/11/13. */export default [ { "access_token": "123146", "start_time": "2017-02-03", "end_time":"2017-03-04", "keyword":"wenzhi",

2017-11-22 17:21:15 589 1

原创 push参数

this.$router.push({ name:'forgetCodeTwoModule', params:{ result:response } }) {{this.$route.params.resu

2017-11-20 16:22:10 8712

原创 vue 短信验证码UI

<mt-button icon="back" slot="left" class="backBox" @click="backAction">返回 <el

2017-11-20 15:24:24 2127

原创 vue-router获取上一页面的url信息

今天在实现一个功能的时候,遇到一个问题,使用vue-router获取上一页面的url信息,我尝试了多种方式,发现使用vue-router的beforeRouterEnter钩子实现这个功能最为方便,现在将我的实现代码总结如下: beforeRouteEnter (to, from, next) { console.log(to) console.log(fr

2017-11-20 11:41:51 21907 3

空空如也

空空如也

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

TA关注的人

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