温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

读Effective Objective C总结(三)

发布时间:2020-07-08 09:52:26 来源:网络 阅读:351 作者:Kris_Chain 栏目:开发技术
  1. 在collection集合类中如NSSet中是不允许有相同的元素的,但是如果这样写:读Effective Objective C总结(三)

    这样就会第一个set的输出结果是两个相同的元素,第二个set的输出结果只有一个元素

  2. 类族模式:由于在OC中没有抽象基类,因此用工厂模式,比如我们可以用创建UIButton类似的方法:读Effective Objective C总结(三)判断某个实例所属的类是否在类族之中,要用isKindOfClass不能用isMemeberOfClass,因为有些类会有内部类型

  3. 关联对象的使用,实际上就是在局部空间建立一个通道来共享某些类,如在UIAlert里面共享block

  4. 消息是由接受消息的对象和函数指针构成的,若是没有用到runtime,编译器生成函数代码的指令是硬编码,如果用到动态绑定:

    第一,先要用@dynamic关键字修饰需要动态生成的属性,然后重写类的resolveInstanceMethod方法

    第二,如果第一步还是没有找到合适的方法,就会调用forwardingTargetForSelector方法转发给其他对象,一直执行到NSObject

    第三,如果第二步还没有成功,就要启动完整的消息转发机制,首先创建NSInvocation对象,把尚未处理的消息信息全部封装在这个对象里

  5. 可以通过方法调换的方式,改变objc_msgSend中函数列表中IMP的指针

  6. OC对象实际上使用结构体和指针来构造的,用isMemberOfClass判断是否为某一特定类的实例,用isKindOfClass判断是否为其类或者派生类的实例,而不要用[A Class] == [B Class]


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI