内存入门
来源:互联网 发布:淘宝收货可以延长多久 编辑:程序博客网 时间:2024/05/16 03:26
#pragma mark 手动管理内存
//影响引用计数改变的方法:
//alloc retain release autorelease dealloc copy mutableCopy
#pragma mark 引用计数增加
//alloc 将引用计数从零变为一;
//retainCount 看引用计数
//将对应的内存引用加一,并返回内存首地址;
Person *per1 = [per retain];
//释放
[per1 release];
//当引用计数为1时,再次releas 不会将引用计数减为0
//而是将内存释放
[per2 retain]; //持有对象;
//自动释放池
@autoreleasepool {
//自动释放 当自动释放池释放时,释放对象;
//只有在自动释放池里面使用autorelease才有效;
[per2 autorelease];
[per2 autorelease];
NSLog(@"%ld",per2.retainCount);
} //自动释放池释放
//不能对常量区的内存进行管理;
NSString 以及常量
//不可变字符串引用计数都是-1,及是整数的最大值;
//内存管理原
一、谁创建,谁释放; alloc release/autorelease
二、是持有,谁释放; retain release/autorelease
四、谁拷贝,谁释放; copy release/autorelease
三、没有retain,alloc,copy就不释放;
//当对象被销毁时,系统自动调用这个方法
-(void)dealloc {
//释放属性的空间,本类
NSLog(@“快释放我");
//先释放本类在释放父类;
[super dealloc]; //释放父类;
[_name release];
}
Person *per2 = [per copy];
@interface Person : NSObject <NSCopying>
////浅拷贝
//-(id)copyWithZone:(NSZone *)zone {
// Person *p = [[Person alloc] init];
// p.name = self.name;
// return p;
//}
////伪拷贝
//-(id)copyWithZone:(NSZone *)zone {
// return [self retain];
//}
//深拷贝 对象开辟新的空间,两个对象的实例变量也指向不同的空间。
-(id)copyWithZone:(NSZone *)zone {
Person *p = [[Person alloc] init];
// p.name = [[NSString alloc] initWithString:self.name];
p.name = [[NSString alloc] initWithFormat:@"%@",self.name];
return p;
}
#pragma 协议
//以@protocol 开始,以@end结束
/*
@protocol 协议名称 <父协议>
协议方法(标志)
@end
*/
//协议只需要方法的声明,不需要实现;
在.M文件里写实现;
协议与类的融合
//协议格式: <协议名称>
// 遵守协议之后,
//多个协议 用逗号隔开;
@interface Person : NSObject <iOsProgramer, RedPacket>
选择实现;
@optional
默认是必须实现的方法;
@required
- 内存入门
- 共享内存简单入门
- Linux共享内存入门
- JVM内存入门
- 用 TMemoryStream(内存流) 入门
- Objective-C内存管理入门
- 【JVM】java内存管理入门
- 内存池的实现,入门
- [1.入门]Mac内存知识
- 共享内存IPC入门学习
- 内存模型之白话入门
- 初学者 动态内存分配入门
- BIOS入门之我见-内存
- [Linux驱动入门]内存管理
- 【JVM内存模型】入门篇
- CUDA入门(9):固定内存和零拷贝内存
- 菜鸟进阶学堂(七):内存基础知识入门
- Objective-C 入门(三)内存管理
- 草图检索和识别[开源]
- BS架构ERP系统开发全系列之白金教程-系统简介
- GitHub 优秀的 Android 开源项目
- lua -- io.pathinfo
- java web基础 --- form提交
- 内存入门
- [知其然不知其所以然-14] cpu hotplug引出的cgroup故障
- Nginx的红黑树结构
- 哈希的原理和代价
- Centos修炼----->Centos7程序安装方法
- JSP页面中文乱码
- 项目管理软件——禅道
- 把windows换行符转换成unix换行符
- 使用ESCAPE定义转义符