
Object-c
Haiztao
iOS 开发
展开
-
iOS [NSURL URLWithString:url]中文返回nil问题
在使用[NSURL URLWithString:url]⽣成NSURL时,如果url字符串含有中⽂时,会导致返回的NSURL为nil。解决方案:利用runtime添加NSURL扩展。其中stringByAddingPercentEncodingWithAllowedCharacters 对URL字符串百分号编码。...原创 2022-06-09 16:20:07 · 1588 阅读 · 0 评论 -
iOS 字符串转ascii码,字符串转NSData
在xcode中,文件以utf8格式保存。因此,其中变量对象也是以utf8格式保存。不同语言的utf8编码不一样,不同语言的每个字符的utf8编码的字节数不一样,字节码也不一样。但是英文的utf8编码和ascii码一样,对于英文字符,查看它的ascii码,将字符取出来,就是它的ascii码。使用英文转换测试,如下所示:// NSString to ASCIINSString *st...原创 2019-07-08 11:38:30 · 4519 阅读 · 1 评论 -
xcode编译时报unrecognized selector的异常
当调用对象上某个方法,而该对象上没有实现这个方法的时候,可以通过“消息转发”进行解决。objc在向一个对象发送消息时,runtime会根据对象的isa指针找到该对象实际所属的类,然后在该类中的方法列表以及其父类方法列表中寻找方法运行。如果在最底层的父类中依然找不到相应的方法时,程序在运行时会挂掉并抛出异常unrecognized selector sent to xxx。但是在这之前,objc...原创 2019-09-10 17:40:22 · 514 阅读 · 0 评论 -
NSString用copy和strong的区别
NSString为不可变字符串,用copy和strong都是只分配一次内存。1、但是如果用copy,需要先判断字符串是不是不可变字符串,如果是不可变字符串,就不在分配空间,如果是可变字符串才分配空间。2、如果程序中用到NSString比较多,每次都先判断会耗费性能,用strong则不会再判断了,所以不可变字符串可以直接用strong修饰。...原创 2019-09-11 20:34:08 · 481 阅读 · 0 评论 -
Object-c 中结构体与类
一、概念1、结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。2、类对象是一种数据结构,存储类的基本信息:类大小,类名称,类的版本,继承层次,以及消息与函数的映射表等二、内存分布结构体只能封装属性,类不仅可以封装属性也可以封装方法。 结构体变量分配在栈,而类的实例分配在堆,虽然栈的空间相对于堆来说是比较小的,但是存储在栈中的数据访问效率相对高于...原创 2019-09-16 18:28:38 · 406 阅读 · 0 评论 -
runtime 实现方法交换 viewwillappear方法
面试题:在程序中方法实现只执行一次,利用runtime方法交换重写viewwillappear。1、新建分类#import "UIViewController+swizzling.h"#import <objc/runtime.h>@implementation UIViewController (swizzling)//load方法会在类第一次加载的时候被调用...原创 2019-09-18 17:30:21 · 520 阅读 · 0 评论