最近再做一些项目,就把项目中的一些问题收集一些
1 .Protocol
protocol翻译过来叫做“协议”, protocol是用来生命一些必须实现的方法和选择实现的方法,
protocol的语法格式:
@protocol 协议名称- 示例```
// 方法声明列表 @protocol ******
@end - (void)*******;
- (void)********;
@end
2. UICollectionViewLayout
可以看这个博客的 写的挺全的 iOS: 玩转UICollectionViewLayout - CSDN博客
3. respondstoselector
respondsToSelector 用来判断某一个方法时候实现(下面的代码意思:如果baseAPIdidStartRequest这个方法实现了,那么就去调用,防止出现异常)
if ([self.delegate respondsToSelector:@selector(baseAPIdidStartRequest:)]) {
[self.delegate baseAPIdidStartRequest:self];
}
4. MJExtension
可以看这个作者的序列化框架MJExtension详解 + iOS ORM框架 - 简书
5.masonry
第三方库:Masonry。这个库使用率相当高,在全世界都有大量的开发者在使用,其star数量也是相当高的。
这个到时候我到时候单独写一篇文章
6.#import 跟 @class的区别
在ClassA.h中
#import ClassB.h 相当于#include整个.h头文件。如果有很多.m文件#import ClassA.h,那么编译的时候这些文件也会#import ClassB.h增加了没必要的#import,浪费编译时间。在大型软件中,减少.h文件中的include是非常重要的。
如果
只是 ClassB 那就没有include ClassB.h。仅需要在需要用到ClassB的.m文件中 #import ClassB.h
那么什么时候可以用呢?
如果ClassA.h中仅需要声明一个ClassB的指针,那么就可以在ClassA.h中声明
@ClassB
...
ClassB *pointer;
7,NSstring为啥是copy
假如有一个NSMutableString,现在用他给一个retain修饰 NSString赋值,那么只是将NSString指向了NSMutableString所指向的位置,并对NSMUtbaleString计数器加一,此时,如果对NSMutableString进行修改,也会导致NSString的值修改,原则上这是不允许的. 如果是copy修饰的NSString对象,在用NSMutableString给他赋值时,会进行深拷贝,及把内容也给拷贝了一份,两者指向不同的位置,即使改变了NSMutableString的值,NSString的值也不会改变.
网友评论