- 博客(21)
- 收藏
- 关注
原创 隐私政策支持
请您在继续使用我们的产品前务必认真仔细阅读并确认充分理解本隐私政策全部规则和要点, 一旦您选择使用,即视为您同意本隐私政策的全部内容,同意我们按其收集和使用您的相关信息。如您不同意相关协议或其中的任何条款的,您应停止使用我们的产品和服务。我们根据《中华人民共和国网络安全法》和《信息安全技术个人信息安全规范》(GB/T 35273-2017) 以及其它相关法律法规的要求,并严格遵循正当、合法、必要的原则, 出于您使用我们提供的服务和/或产品等过程中而收集和使用您的个人信息,包括但不限于电话号码等。
2023-04-24 08:18:20 74
原创 iOS 正则表达
public init(pattern: String, options: NSRegularExpression.Options = []) throwsNSRegularExpression的实例化方法,需要把匹配规则以字符串的形式传进去。像任何语言一样,正则有自己的保留字符如下:[] () . ? + * & ^ \ /如果你想通过正则匹配这些特殊字符,那么你需要通过backslash (反斜杠)去避开他。例如你想去搜索文本里面的.符号,那么你的pattern就需要传进去.每一门语
2021-01-31 14:17:47 107
原创 iOS swift 倒圆角并绘制阴影
给View倒某几个角为圆角 //倒左右上边两个圆角 let bottomPaskPath = UIBezierPath.init(roundedRect: CGRect.init(x: 0, y: 0, width: KSCreenWidth - 30, height: 60), byRoundingCorners: UIRectCorner(rawValue: UIRec...
2018-03-10 18:02:05 621
原创 iOS button超出父视图时点击无法响应
iOS响应链传递机制:从后向前,即从父视图到子视图循环调用 下面这两个方法- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event- (UIView *)hitTest:(CGPoint)point withEv
2017-11-18 10:46:05 730
转载 NSUrlConnection 网络下载
//频繁调用每次带回来一部分数据,如果此处创建一个全局变量nsmutableData 则必然会导致nsmutableData越来越大,内存暴增 //解决办法: 每次获取到一部分数据后,就将这部分数据写入到沙盒,并释放掉 //NSFileHandle 可以实现对文件的读取 写入 更新 // stringByAppendingPathComponent 这个函数会自动创建文件层级 - (void
2017-07-12 18:09:27 150
原创 NSString Copy Strong
@interface ViewController ()<TTTAttributedLabelDelegate,UITableViewDataSource>@property (nonatomic, strong) FooterView *footerView;@property (nonatomic, strong) UITableView *tableView;@property (no
2017-05-08 22:05:16 210
原创 NSOperation封装操作
1.继承NSOperation 2.复写main 或者start 3.复写 finished executing 语义 4.复写 setter 方法 5.对外API设置finished= yes#import "MMPOperation.h"@interface MMPOperation ()@property (assign, nonatomic,getter=isExecuting
2017-03-13 15:04:32 286
原创 OC 属性
@property会通知编译器在编译期间生成属性对应的实例变量和access method 父类的属性语义被子类改写之后,需要手动通知编译器实现access method 和生成对应的实例变量#import <Foundation/Foundation.h>@interface Person : NSObject@property (nonatomic, copy, readonly) NSS
2017-03-13 15:00:52 401
原创 NSOPeration NSOperationQueue
NSOperation是一个抽象类。实际开发中用它的两个子类:NSInvocationOperation NSBlockOperation//NSBlockOperation可以通过block异步执行任务,且block里面的代码是同步的- (void)blockOperationTest{ NSBlockOperation *blockOperation = [NSBlockOperatio
2017-02-06 11:29:04 211
转载 NSTimer循环引用不释放问题
倒计时是电商APP中经常遇到的,倒计时的技术实现,Apple的Foundation框架提供了NSTimer类 倒计时的实现如下: HZTimer.h@protocol HZTimerDelegate <NSObject>- (void)timerHandleEventWithLeftSeconds:(NSInteger)seconds;@end@interface HZTimer : NSOb
2016-11-28 11:24:18 398
原创 iOS 多线程
iOS提供了NSThread NSOperation & NSOperationQueue GCD 来实现多线程编程。抽象程度由低到高,越抽象越简单- (void)viewDidLoad { [super viewDidLoad]; for (int i = 0; i < 100; i++) { NSLog(@"==========%@===========%d",[
2016-11-16 21:52:08 206
转载 copy mutableCopy
copy mutableCopy 区别 : 1.对于非容器类不可变对象,copy是复制指针浅拷贝,mutableCopy是深拷贝系统会为其开辟新的内存。对于非容器类可变对象,都是深拷贝,但是copy返回的对象是不可变的 2.对容器类对象,以上结论一样适用,但是注意的是,容器内的元素都是指针复制
2016-11-08 14:23:08 330
转载 runtime之@dynamic属性
@dynamic属性用于通知编辑器不要生成属性对应的实例变量和setter getter 方法,但是在编译时期调用对应的存取方法不会报错,再次验证了OC是一门动态语言#import <Foundation/Foundation.h>@interface AutoDictionary : NSObject@property (nonatomic, copy) NSString *string;@
2016-11-07 15:28:00 341
转载 runtime 运行时
了解oc 运行时可分为以下三块: 1.概念 IMP SEL MEthod 2.消息发送流程 3.消息转发流程概念篇:SEL:oc在编译时会根据方法名和参数序列生成唯一的方法标识就是SEL IMP: SEL 对应方法实现 MEthod:在 SEL 和 IMP之间建立映射消息发送流程://第一个参数消息接收者,第二个参数 SELOBJC_EXPORT void objc_msgSend(vo
2016-11-03 10:49:02 152
转载 Python函数
在Python中定义一个函数要用def语句,依次写出函数名 括号 括号中的参数 冒号,然后在缩进款中编写函数体def my_abs(x): if x > 0: return x else: return -xd = my_abs(10)print d
2016-11-01 22:05:30 153
转载 runtime给现有类动态添加方法
创建person类.h#import <Foundation/Foundation.h>@interface Person : NSObject@end.m#import <Foundation/Foundation.h>#import "Person.h"#import <objc/message.h>@implementation Person+(BOOL)resolveInstanc
2016-10-31 17:12:09 207
转载 RunTime交换方法的实现
#import "UIImage+HZ.h"#import <objc/message.h>//利用runtime 交互方法@implementation UIImage (HZ)//把类加载内存的时候之后调用一次+(void)load{ Method imageNamedMethod = class_getClassMethod(self, @selector(imageName
2016-10-31 16:13:33 246
转载 runtime理论知识
概念: SEL IMP Method OC 在编译时会根据每一个方法的名字、参数序列生成一个唯一的整型标志,这个标识就是SEL,用来表示OC运行时方法的名字,定义如下: typedef struct objc_selector *SEL; ``` IMP 实际上一个函数指针,指向方法实现的首地址typedef id(*IMP)(id,SEL,…)“`
2016-10-31 16:10:52 172
转载 Runtime 初次总结
在接收者所属类的方法列表里找不到selector对应的方法实现时,进入消息转发流程+ (BOOL)resolveInstanceMethod:(SEL)sel // 动态的添加一个方法 class_addMethod([self class], @selector(testMethod), (IMP)newTestMethod, "v@:"); // 添加方法的类,未识别的选择器,添加新方法
2016-10-31 15:40:37 167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人