- 博客(10)
- 收藏
- 关注
原创 iOS 属性什么时候用copy,什么时候用strong?
先说总结:1.对于不可变属性,推荐使用copy,能防止不可变对象变成可变对象,从而防止值发生不可控变化。2.对于可变属性,推荐使用strong,因为用copy修饰后,会变成不可变对象,再调用可变对象的函数时会crash。1、当修饰的属性为"不可变"时:如NSString、NSArray、NSDictionary:首先,用copy和strong声明两个不可变属性@property (nonatomic, strong) NSString *strongStr;@property (nonatom
2021-09-15 21:52:55
1219
原创 【QingQing】iOS14 适配汇总
目录1UIDatePicker 时间选择器2UITableViewCell3粘贴板问题4 权限问题4.1 相册 -PHPhotoLibraryPreventAutomaticLimitedAccessAlert4.2 定位 -NSLocationTemporaryUsageDescriptionDictionary4.3 IDFA -NSUserTrackingUsageDescription4.4 Local Network (局域网)5Wi-Fi A...
2020-10-23 16:27:16
1042
原创 Mac删除文件不经过废纸篓直接删除,提示“将立即删除此项目。您不能撤销此操作”的方案
一些mac用户在升级系统之后,电脑启用了SIP(System Integrity Protection),增加了rootless机制,导致即使在root权限下依然无法修改文件,在必要时候为了能够修改下面的文件,我们只能关闭该保护机制1)重启,过程中按住 command+R,进入保护模式2)打开terminal终端,输入以下命令关闭保护机制csrutil disablePS:如果要恢复保护机制,重新进入保护模式,输入csrutil enable3)再次重启,打开终端,输入以下命
2020-09-02 11:13:58
3085
原创 iOS-解决NSTimer造成的循环引用问题
场景在控制器ViewController(以下简称VC)中声明一个NSTimer,如下@property (strong, nonatomic) NSTimer *timer;进行初始化,并挂载到 main runloop中,如下self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:nil repeats:true];然后
2020-08-07 16:33:41
623
原创 iOS-黑魔法Method-Swizzling的原理与使用
NSLog(@"SHOW TIME");一、Method-Swizzling是个啥Method-Swizzling实际就是更换方法所对应的实现函数,如下图1-1,更换前调用方法selector1执行的是IMP1函数,更换后调用selector1执行的就变成了IMP2。 图1-1 method-swizzling更换两个selector方法的实现二、代码演示下流程2.1 首先创建个继承NSObject...
2020-08-06 22:47:44
803
原创 iOS-消息传递&消息转发原理初探
NSLog(@"SHOW TIME...");当我们调用方法时,比如[obj class],就是向obj所属的类发送一条消息,那么系统是如何发送这条消息的?它是如何帮我们找到对应的方法实现的?要是找不到对应的方法实现怎么办?接下来跟我一起探索OC的 传递和消息转发吧⏬一、消息的传递机制objc_msgSend()在系统运行编译时,会将[obj class]转换成C函数objc_msgSend(obj, @selector(class))二、消息传递流程如[obj class],..
2020-08-06 18:03:44
754
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人