摘要:
1、换的图片用一个新的名字、不要用之前的名字 2、将图片放在项目目录下、不要放在Assets.xcassets 里 阅读全文
摘要:
第一步你需要一个注册一个谷歌开发者账号 地址 https://console.cloud.google.com/ 创建一个凭据 3、启用 如下两个 API 4、Google 集成文档 https://developers.google.com/maps/documentation/ios-sdk/i 阅读全文
摘要:
方法一 使用代理软件 (推荐) 使用 ClashX Pro (一款代理软件) 设置里面有一个增强模式把它打开 增强模式可以让一些软件默认走代理入(Telegram) 当然也能在克隆代码的时候默认走代理 方法二 给终端添加代理 (缺点 终端重启后代理会失效、需要重新执行命令) 首先需要一个梯子、保证能 阅读全文
摘要:
特点:不同的东西进行组合、做完一件事 还能继续做另一件事 1、以实现计算器为例 @interface JiSuanQiManger : NSObject @property (nonatomic,assign) NSInteger rsult; -(JiSuanQiManger *)jiSuan:( 阅读全文
摘要:
例子 新建一个父类、一个子类 Person SubPerson 在子类中打印 #import "SubPerson.h" #import <objc/message.h> @implementation SubPerson -(void)test{ NSLog(@"%@",[self class]) 阅读全文
摘要:
例子 实现一个计算器 #import "CalcuteManger.h" @implementation CalcuteManger -(CalcuteManger *(^)(NSInteger))add{ return ^(NSInteger num){ _result+=num; return 阅读全文
摘要:
变量捕获会在blcok结构体内部生成一个变量已来存储捕获到的指针或者值 #import "Person.h" @implementation Person /* oc每个函数后面都自带 (Person * self, SEL _cmd) -(void)test:(Person * self, SEL 阅读全文
摘要:
1、编写测试代码 并将其转换成c++代码 查看具体实现 进入main.m所在目录 执行 xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m 或者 xcrun -sdk iphoneos clang -arch arm64 -rewri 阅读全文
摘要:
pthread_rwlock:读写锁 #import "ViewController.h" #import <Pthread.h> @interface ViewController () @property (nonatomic,assign) pthread_rwlock_t lock; @en 阅读全文
摘要:
atomic用于保证属性setter、getter的原子性操作,相当于在getter和setter内部加了线程同步的锁 可以参考源码objc4的objc-accessors.mm 它并不能保证使用属性的过程是线程安全的、比如声明一个atomic数组 同时几个线程往数组加东西 atomic 大多用在M 阅读全文