- 博客(99)
- 收藏
- 关注
原创 ios 关联对象 Associated Object
在Objective-C中,关联对象(Associated Object)是通过runtime函数实现的动态对象关联技术,允许开发者在运行时将任意对象关联到其他对象上。关联对象并不是直接存储在对象本身中,而是通过一个全局的关联对象哈希表来存储的。因此,关联对象的实际存储位置是由Objective-C的runtime库来管理的,而不是存储在对象本身中。函数时,Runtime会将关键字和关联对象的指针保存到全局的关联对象哈希表中。函数时,Runtime会根据对象和关键字从哈希表中查找关联对象的指针并返回它。
2023-04-12 22:43:53
232
原创 ios开发 block 为什么使用copy修饰
具体来说,Block 在创建时可能存储在不同的内存区域(栈或堆)中,而在将其赋值给对象或作为函数或方法的参数时,需要确保 Block 存储在堆中,以便在调用时能够正常执行。如果 Block 存储在栈中,则在函数或方法返回后,Block 对象所在的内存区域将被释放,从而导致程序崩溃或者产生其他未定义的行为。这样做的原因是 Block 在被赋值给对象或作为函数或方法的参数时,会自动执行一次。因此,在 iOS 开发中,当将 Block 赋值给对象或作为函数或方法的参数时,需要使用。属性时,会自动执行一次。
2023-04-12 09:40:12
1154
原创 ios copy和strong区别
在使用 Objective-C 时,选择正确的修饰符对于正确的内存管理和避免常见的错误非常重要。修饰符声明的 NSString 对象,它将被复制一份并分配给新的变量或属性。表示对对象的一种强引用,增加对象的引用计数,确保对象不会在其仍然被需要时被释放。表示对对象的一种深复制,创建一个独立的对象并将其所有权传递给新的变量或属性。修饰符时,对象会被复制一份并分配给新的变量或属性,新的对象和原始对象是独立的。修饰符时,对象会在其拥有它的对象存在的时候一直被保持,直到其所有者被释放。用于创建对对象的强引用,而。
2023-04-11 17:47:09
525
原创 ios对象归档解档
对象归档和解档的过程中,需要实现NSCoding协议中的两个方法:encodeWithCoder:和initWithCoder:。对象归档是将一个对象及其属性转换为二进制数据的过程,而对象解档则是将二进制数据还原为原始对象及其属性的过程。在Objective-C中,可以使用对象归档和解档来将一个对象的状态保存到文件中,或者从文件中恢复对象的状态。注意,在归档和解档时,如果对象中包含了其他对象,则需要在对应的对象中也实现NSCoding协议,以便可以正确地保存和还原对象的状态。
2023-04-11 14:33:22
248
原创 GCD 并发队列来实现多读单写
通过以上步骤,我们实现了多读单写的功能,多个线程可以同时读取共享数据,但是只有一个线程能够写入数据。iOS 的多读单写指的是多个线程可以同时读取共享的数据,但是只有一个线程能够写入数据。1.定义一个并发队列和一个串行队列,用于处理读操作和写操作,分别为 readQueue 和 writeQueue。4.实现写操作,使用 writeQueue 中的同步方法来执行写入操作,这样保证只有一个线程能够写入数据。3.实现读操作,使用 readQueue 中的异步方法来执行读取操作,这样多个读操作可以同时进行。
2023-04-10 20:58:49
722
1
原创 git push出现git@github.com: Permission denied (publickey) 解决办法
git push出现git@github.com: Permission denied (publickey)
2022-11-30 18:07:36
2522
原创 Flutter 列表组件ListView 网格布局组件GridView
持垂直和水平方向展示。通过一个属性就可以控制列表的显示方向。列表布局是我们项目开发中最常用的一种布局方式。Axis.horizontal水平列表。Axis.vertical垂直列表。
2022-11-28 11:05:51
1029
原创 iOS消息转发机制
消息转发机制objective调用方法实质上是给对象发送一个消息.对于实例方法,每个实例的 isa 指针指向着对应类对象,而每一个类对象中都一个对象方法列表。对于类方法,每个类对象的 isa 指针都指向着对应的元对象,而每一个元对象中都有一个类方法列表。方法列表中记录着方法的名称,方法实现,以及参数类型,其实 selector 本质就是方法名称,通过这个方法名称就可以在方法列表中...
2020-03-22 17:17:50
258
原创 基于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
326
原创 WKWebView与vuejs交互
0.js点击事件,oc监听事件和参数onLineCollectionFun:function () { console.log('在线收款') window.webkit.messageHandlers.OnLineCollectionFun.postMessage({'methodsID':'1'});},1.#import <WebKit/WebKit.h&...
2018-04-17 15:02:44
3042
1
原创 iOS 银行卡号合法性判断
输入银行卡号的时候,一般为了卡号的合法性会做一个判断,使用了Luhn算法 Luhn算法步骤: 1、从卡号的末位开始,逆向将奇数位相加; 2、从卡号的末位开始,逆向将偶数位先乘2,如果得到的数为两位数则减9,再将得到的数求和; 3、将奇数位的和与偶数位的和相加得到的数除以10,如果可以被10整除,则这个卡号是合法的。 举个栗子: 卡号:6227612145830440(网上搜的
2018-03-29 15:33:53
651
原创 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
1234
原创 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
3615
原创 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
389
原创 UIWebView和vue.js通信(json数据)
iOS接收Vue的json数据 methods:{ //选择某一个银行 hotBankFun:function (bank) { console.log(bank) hotBankFunClick(bank) } }- (void)w...
2018-03-05 09:56:30
1753
原创 JavaScript面向对象程序设计
一、对象JavaScript的简单数据类型包括数字、字符串、布尔值、null值和undefined值。其他所有的值都是对象。数字、字符串和布尔值“貌似”对象,因为它们拥有方法,但它们是不可变的。JavaScript中的对象是可变的键控集合(Keyed collections)。在JavaScript中,数组时对象,函数是对象,正在表达式是对象,当然,对象自然也是对象。对象是属性的集合,每一个属性具有
2018-03-01 13:37:48
212
原创 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
914
原创 vue监听滚动事件 实现某元素吸顶或者固定位置显示
最近写VUEapp项目,需要实现某个部位吸顶的效果。即,页面往上滑动,刚好到达该部位时,该部分,固定在顶部显示1、监听滚动事件利用VUE写一个在控制台打印当前的scrollTop,首先,在mounted钩子中给window添加一个滚动滚动监听事件mounted () { window.addEventListener('scroll', this.handleScroll)}然后在metho...
2018-02-27 11:56:30
1199
原创 html 弹出层
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> #login { display:none; border:1em..
2018-02-27 11:36:27
4047
原创 02.27 vue布局 collectionView
<!--模块2热门银行--><div class="hot-bank"> <div class="hot-bank-title"> <div class="left">热门银行</div> </div> <div class=&
2018-02-27 10:25:43
731
原创 02.26 组件间传值(controller-view)
1.控制器<template> <div class="hwd-content" v-cloak> <div class="bgBox"> <img :src="bgImg[0].src" class="bgBoxImage"> </
2018-02-26 10:33:05
207
原创 02.26 创建一个vue组件
1.Result.vue<template> <div class="hua-result-view" @click="cardDidClick"> <div class="result"> <div class="title">您得到了
2018-02-26 10:21:24
281
原创 02.26vue布局 tableViewCell左右布局(文字显示两行)
<div class="xyk-strategy"> <div class="title-box"> <mt-cell title="信用卡攻略" value="查看更多" is-link></mt-cell> </div> <div&
2018-02-24 14:13:06
2190
原创 照片选择
1.弹框,-选择照片来源 - (void)changImage{ UIAlertController * vc = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet ]; UIAlertAction * act01
2018-01-03 09:44:14
328
原创 objective-c block
1.cell定义blocktypedef void(^LLDefaulButtomActionBlock)(AddrListCell* cell); @property(nonatomic,copy) LLDefaulButtomActionBlock editBlock;- (void)editAddressButtonActionBlock:(LLDefaulButtomActionBlo
2017-12-29 13:28:43
311
原创 UICollectionView组标题
1.//设置collectionView头视图的大小static NSString *sectionHeaderID =@”sechederview”;flowLayout.headerReferenceSize=CGSizeMake(KScreenWidth,40); 2.//注册分组头视图[collectionView registerClass:[UICollecti
2017-12-28 16:49:59
1513
原创 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
9362
原创 实现UICollectionViewCell自适应文字宽度和选中项目
1.collectionView- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { for (AutoCellModel * model in self.dataArray) { model.isSelected
2017-12-21 15:37:00
3339
原创 vue三级界面使用better-scroll滚动
<van-nav-bar title="商品详情" leftText="返回" leftArrow @click-left="backAction" />
2017-12-18 18:23:02
553
原创 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
875
原创 HWTabBarController选中事件
-(BOOL)tabBarController:(UITabBarController )tabBarController shouldSelectViewController:(UIViewController )viewController { }返回值YES,直接通过。返回值NO拦截objective-c if (![viewController isKindOfClass:[UINavi
2017-12-08 11:13:22
269
原创 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
428
原创 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
3293
原创 自定义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
463
原创 自定义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
2436
原创 better-scroll使用
<li class="menu-item" ref="menuList" v-for="good in goods"> {{good.name}}
2017-11-24 17:56:18
1157
原创 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
637
原创 push参数
this.$router.push({ name:'forgetCodeTwoModule', params:{ result:response } }) {{this.$route.params.resu
2017-11-20 16:22:10
8885
原创 vue 短信验证码UI
<mt-button icon="back" slot="left" class="backBox" @click="backAction">返回 <el
2017-11-20 15:24:24
2188
原创 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
22162
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人