读EffectiveObjectiveC总结(三)-创新互联
在collection集合类中如NSSet中是不允许有相同的元素的,但是如果这样写:
坚守“ 做人真诚 · 做事靠谱 · 口碑至上 · 高效敬业 ”的价值观,专业网站建设服务10余年为成都成都三维植被网小微创业公司专业提供成都定制网站营销网站建设商城网站建设手机网站建设小程序网站建设网站改版,从内容策划、视觉设计、底层架构、网页布局、功能开发迭代于一体的高端网站建设服务。这样就会第一个set的输出结果是两个相同的元素,第二个set的输出结果只有一个元素
类族模式:由于在OC中没有抽象基类,因此用工厂模式,比如我们可以用创建UIButton类似的方法:判断某个实例所属的类是否在类族之中,要用isKindOfClass不能用isMemeberOfClass,因为有些类会有内部类型
关联对象的使用,实际上就是在局部空间建立一个通道来共享某些类,如在UIAlert里面共享block
消息是由接受消息的对象和函数指针构成的,若是没有用到runtime,编译器生成函数代码的指令是硬编码,如果用到动态绑定:
第一,先要用@dynamic关键字修饰需要动态生成的属性,然后重写类的resolveInstanceMethod方法
第二,如果第一步还是没有找到合适的方法,就会调用forwardingTargetForSelector方法转发给其他对象,一直执行到NSObject
第三,如果第二步还没有成功,就要启动完整的消息转发机制,首先创建NSInvocation对象,把尚未处理的消息信息全部封装在这个对象里
可以通过方法调换的方式,改变objc_msgSend中函数列表中IMP的指针
OC对象实际上使用结构体和指针来构造的,用isMemberOfClass判断是否为某一特定类的实例,用isKindOfClass判断是否为其类或者派生类的实例,而不要用[A Class] == [B Class]
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站栏目:读EffectiveObjectiveC总结(三)-创新互联
地址分享:http://hbruida.cn/article/eisii.html