美文网首页
一些总结

一些总结

作者: 成功没有捷径_LBQ | 来源:发表于2016-11-25 13:54 被阅读0次

1.虽然Objective-C在语法上禁止类使用多继承,但是在协议的遵守上却允许使用多继承。所以可以用协议来实现多继承。
2.父类指针可以指向子类对象
3.一个对象(Object)的isa指向了这个对象的类(Class),而这个对象的类(Class)的isa指向了metaclass。这样我们就可以找到静态方法和变量了。

4.NSRange 各种初始化方法
NSRange range1;

    // 分别赋值
    range1.location = 18;
    range1.length = 20;
    print_range(range1);
    
    // 结构初始化方法
    NSRange range2 = {20, 40};
    print_range(range2);
    
    // 调用辅助的build函数
    NSRange range3 = NSMakeRange(30, 60);
    print_range(range3);
    
    // 暂时没有确定的有意义的值,可以设置成NSNotFound
    NSRange range4 = {NSNotFound, NSNotFound};
    print_range(range4);

5.block
block是ios中一种比较特殊的数据类型
block的作用:
用来保存某一段代码,可以在适当的时间再取出来调用
功能类似于函数和方法
默认情况下block存储在栈中, 如果对block进行一个copy操作, block会转移到堆中
如果block在栈中, block中访问了外界的对象, 那么不会对对象进行retain操作
如果block在堆中, block中访问了外界的对象, 那么会对外界的对象进行一次retain

6.@synthesize
@synthesize在.m文件里自动生成了get/set方法。因此,我们只要在@implementation后面加上一行:@synthesize 就可以自动生成get/set方法了,省掉了很多麻烦。
从Xcode4.4开始,编译器会自动为每一条@property都添加一条对应的@synthesize,因此以后我们只要写一个@property就可以了!

  1. 点语法:编译器会自动将点语法转换成set、get方法的调用代码

copy和mutableCopy区别:
copy, 无论被复制的对象是否是可变的, 复制出来的副本都是不可变的
mutableCopy, 无论被复制的对象是否是不可变的, 复制出来的副本是可变的
// 从不可变到可变, 地址不一样
// 从可变到可变, 地址不一样
// 从可变到不可变, 地址不一样
// 从不可变到不可变, 地址一样
( 原因: copy核心就是为了保证修改其中一个对象不会影响到另外一个对象
由于源和副本都不可以被修改, 所以不用创建一个新的对象)
/*
总结:
核心: 修改源对象不会影响到副本对象, 修改副本对象不会影响到源对象
深拷贝和浅拷贝
会创建新的对象的拷贝, 我们称之为深拷贝
不会创建新对象的拷贝, 我们称之为浅拷贝(指针拷贝)
*/
对于mutableCopy,此重新创建了一个内存地址,为深拷贝。
而字符串默认是浅拷贝

9.// 只要在对象前面加上__block, 无论block在栈中还是堆中, 都不会对外界的对象进行retain操作

10.在ARC中 assign,weak,copy,strong 属性的作用,下列说法正确的是(多选)( ABCD )
A.copy : 一般用于NSString\block
B.strong : 一般用于除了NSString\block以外的OC对象
C.weak : 一般用于代理\UI控件 当2个对象相互引用,一端用strong,一端用weak
D.assign : 基本数据类型、枚举、结构体(非OC对象)

11.UIViewController在整个生命周期中,以下各个方法的调用顺序正确的是( A )
A. init -> viewDidLoad -> viewWillApper -> viewDidAppear -> viewWillDisapper -> viewDidDisapper

12.关于NSSet、NSArray、NSDictionary
NSArray 是顺序的,可以通过下标获取数组中的对象
NSDictionary 是无序的,通过键值对匹配,可以通过key-->value
NSSet、NSArray、NSDictionary只能保存Cocoa对象,不能用于保存C语言中的基本数据类型

13.iOS中代理设计模式
代理本身是一个对象,这个对象是专门代表被代理对象来和程序中其他对象打交道的。
代理的主要价值是它可以让你容易的定制各种对象的行为。
当一个类的某些功能需要被别人来实现,但是既不明确是些什么功能,又不明确谁来实现这些功能的时候,代理模式就可以派上用场。

  1. import 是 #include 的替代指令,防止重复引用

15.代理和通知
共同点
利用通知和代理都能完成对象之间的通信
(比如A对象告诉D对象发生了什么事情, A对象传递数据给D对象)

不同点
代理 : 1个对象只能告诉另1个对象发生了什么事情
通知 : 1个对象能告诉N个对象发生了什么事情, 1个对象能得知N个对象发生了什么事情

16.好用的打包工具:
https://github.com/Caiflower/Autobuild
ipa包丢到fir.im上. 测试们自己扫码下载啊
http://fir.im/

17.#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
用法:self.richLabel.textColor = UIColorFromRGB(0x7e7e7e);

相关文章

  • 一些总结

    作为副组长,确实是一个锻炼的机会。但是我之前好像没怎么意识到。因为我觉得自己对三月来说还是一枚“萌新”吧,好像还不...

  • 一些总结

    要往深处去,就不能停留在表面的娱乐。 浪费时间在无意义的事情上,只会让自己更空虚。 只有在学习中提高自己的能力,才...

  • 一些小总结!

    重新申请了一个新的简书,每天给自己十五分钟的梳理时间,然后开始学习! 今天第一天! 今天和好朋友一起又给自己的系统...

  • 一些总结

    不得不说,*年的工作经验,其实没写多少代码,只是一直在拓宽自己的技术视野,深度上追求过少。写的没有重点,想到什么就...

  • 一些总结

    1、在进行微信网页录音功能开发的时候,微信jssdk初始化一定要把用到的方法写在wx.config配置信息jsAp...

  • 一些总结

    1.去跑步的时候看到无数身材比我好五万倍的妹子在跑步,真的是那种瘦高白腰细腿长的妹子,想到原来每晚下班坐在烧烤摊前...

  • 一些总结

    全然地接受自己当前存在的不足,然后与昨天的自己比较,前天的自己,去年现在的自己,大一的自己。肯定已经翻天地覆的变化...

  • 一些总结

    swfit3.3 为类增加属性(OC中的Rumtime) 融云中为RCUserInfo 添加成员属性 三等分约束 ...

  • 一些总结

    1.你始终得相信一句话,那就是外表越谦卑的人,是越懂得如何克己修身的人。这绝非作秀所能表现出来的,因为会展现得很别...

  • 一些总结

    1.虽然Objective-C在语法上禁止类使用多继承,但是在协议的遵守上却允许使用多继承。所以可以用协议来实现多...

网友评论

      本文标题:一些总结

      本文链接:https://www.haomeiwen.com/subject/aoaipttx.html