这是我参与「第四届青训营 」笔记创作活动的的第3天 Objective-c
Foundation框架
#import <Foundation/Foundation.h>
- NSObject Class 所有类的根类,包含了大量适应OC语言方法,NSObject是一个遵守NSObject协议的类
- [ [ ClassName alloc ] init ] = [ ByteDancer new ]
- NSObject-发送消息(方法调用)-[ ObjectName Message ]
- 类关系判断:应用于字典对应的不确定类型的判断和转型
Foundation框架的基本数据类型
- NSString字符串
-
- 创建:c语言字符串 char *cString = “James”
- 格式化字符串: NSString *stringObject5 = [ [ NSString alloc[ initWithFormat:@“%d, %@ ” , a, ”str”];
- 具体用法有:
-
- 获取长度:length
- 获取索引下表的字符 characterAtIndex:0
- 截取字符串:substring…
- Array数组
-
- 创建
- 可变NSMutableArray特殊方法
-
- (void)addObject:(ObjectType)anObject;
- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index;
- (void)removeLastObject;
- (void)removeObjectAtIndex:(NSUInteger)index;
- NSMutableArray数据增删
- NSDictionary字典:@key1(随便格式)@value1(随便格式)
-
- 访问与增删
- NSNumber:@(数字)=创建NSNumber对象
iOS&Objective-C的内存管理
iOS内存管理——ARC|强引用计数
我们需要管理什么?-任何继承NSObject对象都需要进行内存管理继承NSObject对象会分配在堆里
栈内存中储存非OC对象,堆内存中存储OC对象
- MRC Manual Reference Counting
-
- alloc new copy mutableCopy 开头的方法创建对象 引用计数=1
- retain引用计数+1
- release 引用计数-1
- 当对象的引用计数=0时,系统会向对象发送dealloc(内存回收)
- @autoreleasepool自动内存释放池
- ARC Automatic Reference Counting编译器自动加入内存管理代码
-
- 只要有一个强指针在内存中指向对象,对象就不能释放「特别注意循环引用导致内存溢出」
- ARC销毁时强引用的个数=0;而不是引用的个数=0;
- 默认所有的对象变量的指针都是强指针:ClassName *pr = [ClassName new]/[ [ClassName alloc ] init] 而弱指针需要显式声明 __weak
- @Property
-
- strong:强持有 keep this in the heap until I don’t point to it anymore; only of OC object
- Weak:弱持有|不拥有属性对象 keep this in the heap as long as someone else point s to it strongly; only of OC object
- Copy:拥有属性对象的拷贝,和strong的区别:会调用copy方法
- Assign:assign指定setter使用简单赋值,用于基本类型,不用于OC对象
- 避免循环引用,常见于Delegate