腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
ShaoYL
专栏作者
举报
123
文章
146992
阅读量
39
订阅数
订阅专栏
申请加入专栏
全部文章(123)
ios(52)
其他(14)
c 语言(12)
objective-c(11)
编程算法(9)
xcode(8)
存储(5)
开源(5)
打包(4)
数据库(3)
api(3)
数据结构(3)
sql(2)
git(2)
sass(2)
缓存(2)
ssh(2)
微信(2)
安全(2)
区块链(1)
iphone(1)
swift(1)
lua(1)
react(1)
android(1)
汇编语言(1)
sqlite(1)
github(1)
svn(1)
访问管理(1)
人工智能(1)
游戏(1)
自动化(1)
正则表达式(1)
gui(1)
ui(1)
uitableview(1)
uitextfield(1)
view(1)
web(1)
搜索文章
搜索
搜索
关闭
# iOS Block的本质(三)
编程算法
struct __main_block_impl_0 { struct __block_impl impl; struct __main_block_desc_0* Desc; Person *__weak person; __main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, Person *__weak _person, int flags=0) : person(_weakPerson) { impl.isa = &_NSConcreteStackBlock; impl.Flags = flags; impl.FuncPtr = fp; Desc = desc; } };
用户1941540
2019-02-15
456
0
iOS Block的本质(一)
编程算法
存储
iOS Block的本质(一) 1.对block有一个基本的认识 block本质上也是一个oc对象,他内部也有一个isa指针。block是封装了函数调用以及函数调用环境的OC对象。 2.探寻block的本质 首先写一个简单的block int main(int argc, const char * argv[]) { @autoreleasepool { int age = 10; void (^block)(int, int) = ^(int a , int b)
用户1941540
2019-02-15
693
0
iOS Category实现原理
编程算法
// Attach method lists and properties and protocols from categories to a class. // Assumes the categories in cats are all loaded and sorted by load order, // oldest categories first. static void attachCategories(Class cls, category_list *cats, bool flush_caches) { if (!cats) return; if (PrintReplacedMethods) printReplacements(cls, cats); bool isMeta = cls->isMetaClass(); // fixme rearrange to remove these intermediate allocations method_list_t **mlists = (method_list_t **) malloc(cats->count * sizeof(*mlists)); property_list_t **proplists = (property_list_t **) malloc(cats->count * sizeof(*proplists)); protocol_list_t **protolists = (protocol_list_t **) malloc(cats->count * sizeof(*protolists)); // Count backwards through cats to get newest categories first int mcount = 0; int propcount = 0; int protocount = 0; int i = cats->count; bool fromBundle = NO; while (i--) { auto& entry = cats->list[i]; method_list_t *mlist = entry.cat->methodsForMeta(isMeta); if (mlist) { mlists[mcount++] = mlist; fromBundle |= entry.hi->isBundle(); } property_list_t *proplist = entry.cat->propertiesForMeta(isMeta, entry.hi); if (proplist) { proplists[propcount++] = proplist; } protocol_list_t *protolist = entry.cat->protocols; if (protolist) { protolists[protocount++] = protolist; } } auto rw = cls->data(); prepareMethodLists(cls, mlists, mcount, NO, fromBundle); rw->methods.attachLists(mlists, mcount); free(mlists); if (flush_caches && mcount > 0) flushCaches(cls); rw->properties.attachLists(proplists, propcount); free(proplists); rw->protocols.attachLists(protolists, protocount); free(protolists); }
用户1941540
2019-02-15
1.2K
0
KVC/KVO 本质
编程算法
2. 若没有找到Set方法,会调用对象的类方法+ (BOOL)accessInstanceVariablesDirectly;此方法返回YES时(默认返回YES),会按照_key,_iskey,key,iskey的顺序搜索成员,然后赋值。
用户1941540
2019-02-15
550
0
Protocol(协议)
编程算法
Protocol(协议) (一) (1)简介 1.Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现。看起来类似于一个类的接口, 不同的是协议没有父类,也不能定义实例变量。 2.只要某个类遵守了这个协议,就拥有了这个协议中的所有方法声明。 3.只要父类遵守了某个协议,那么子类也遵守。 4.Protocol声明的方法可以让任何类去实现,protocol就是协议。 5.OC不能继承多个类(单继承)但是能够遵守多个协议。继承(:),遵守协议(< >) 6.基协议:<NSObj
用户1941540
2018-05-11
2.2K
0
OC语言Block 续
编程算法
c 语言
打包
OC语言 Block 转载:http://blog.csdn.net/weidfyr/article/details/48138167 1.Block对象中的变量行为 结论: 在block代码块内部可
用户1941540
2018-05-11
543
0
self和super的区别
编程算法
(1)self调用自己方法,super调用父类方法 (2)self是类,super是预编译指令 (3)[self class]和[super class]输出是一样的 ①当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找;而当使用 super 时,则从父类的方法列表中开始找,然后调用父类的这个方法。 ②当使用 self 调用时,会使用 objc_msgSend 函数: id objc_msgSend(id theReceiver,
用户1941540
2018-05-11
1.2K
0
OC语言Block
编程算法
OC语言Block 一、Block (一)简介 Block是什么?苹果推荐的比较特殊的数据类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行。 Block
用户1941540
2018-05-11
854
0
NSSet类型 以及与NSArray区别
存储
编程算法
NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSArray,NSDictionary(都是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的; NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash(散列,也可直译为哈希);开发文档中这样解释:You can u
用户1941540
2018-05-11
1.3K
0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
立即发文
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档