@property 的本质是什么? @property = ivar(成员变量) + getter + setter;
iOS:[深入理解 **KVC\KVO** 实现机制 **— KVO**](https://www.cnblogs.com/zy1987/p/4616764.html)
[**https://www.jianshu.com/p/7728afc1cb82**](https://www.jianshu.com/p/7728afc1cb82)
ios 常见的class 的关系
Oc - swift [http://www.cocoachina.com/ios/20180615/23825.html](http://www.cocoachina.com/ios/20180615/23825.html)
**iOS**类方法、实例方法、构造方法:[https://www.jianshu.com/p/9d38caa5c98a](https://www.jianshu.com/p/9d38caa5c98a)
类方法:静态方法或者工厂方法,是指用static关键字修饰的方法,此方法属于整个类
实例方法:此方法是不用static关键修饰的方法
构造方法:初始化对象的方法!一般来说OC中创建一个对象分为两部分 alloc分配内存空间 init初始化对象
- (instancetype)init
{
self = [super init];
if (self) {
}
return self;
}
// 实现自定义构造函数 在初始化的时候为属性赋值
-(instancetype)initWithName:(NSString *)nameString height:(NSInteger)height{
if (self = [super init]) {
self.name = nameString;
self.height = height;
}
return self;
}
+(instancetype)modelWithName:(NSString *)nameString height:(NSInteger)height{
Model *model = [[self alloc]init];
model.name = nameString;
model.height = height;
return model;
}
例子:利用自定义的构造方法创建一个Model对象,重写description和debugDescription这两个方法并且用运行时遍历对象属性打印。
工厂方法:
+(instancetype)model;
**weak**和**assign**的区别**:https://www.jianshu.com/p/a8a43ae15dcd
assign = unsafe_unretained (MRC)可能导致野指针问题!
weak:不会导致野指针问题 !
【init/initWithFrame调用机制】:init 内部会调用父类的 initWithFrame: 方法,只不过传入的 frame 的值为0,然后父类的 initWithFrame: 方法发现当前的调用对象是子类对象,所以就调用了子类的initWithFrame方法了。这是一个多态的应用。
什么是Block,block的本质一样, 都是函数指针,[函数](https://baike.baidu.com/item/%E5%87%BD%E6%95%B0/301912)指针是指向函数的指针[变量](https://baike.baidu.com/item/%E5%8F%98%E9%87%8F/3956968)。
GCD和NSOperation的优缺点!
**iOS**程序中的内存分配栈区堆区全局区(静态区)常量区方法区:[**https://blog.csdn.net/shi520fu/article/details/70237459**](https://blog.csdn.net/shi520fu/article/details/70237459)
Block不允许修改外部变量的值,这里所说的外部变量的值,指的是栈中指针的内存地址。
__block 所起到的作用就是只要观察到该变量被block所持有,就将外部变量在栈中的内存地址放到了堆中!
同理Block为什么要被Copy修饰,因为要从栈复制到堆里面
[http://www.cocoachina.com/ios/20180411/22975.html](http://www.cocoachina.com/ios/20180411/22975.html)
[http://www.cocoachina.com/ios/20180424/23147.html](http://www.cocoachina.com/ios/20180424/23147.html)
[https://www.jianshu.com/p/14efa33b3562](https://www.jianshu.com/p/14efa33b3562)
[https://www.cnblogs.com/yajunLi/p/6203222.html?utm_source=itdadao&utm_medium=referral](https://www.cnblogs.com/yajunLi/p/6203222.html?utm_source=itdadao&utm_medium=referral)
[https://www.jianshu.com/p/a41396ff0247](https://www.jianshu.com/p/a41396ff0247)
[https://blog.csdn.net/shi520fu/article/details/70237459](https://blog.csdn.net/shi520fu/article/details/70237459)
Timer计时会被scrollView的滑动影响的问题可以通过将timer添加到NSRunLoopCommonModes(kCFRunLoopCommonModes)来解决。代码如下:
网友评论