OC 30 day
栈 储存局部变量。
堆 工程师手动申请的字节空间 malloc calloc realloc函数。
BSS段 储存未被初始化的全局变量,静态变量。
数据段(常量区) 储存已被初始化的全局,静态变量,常量数据。
代码段 储存代码。
当程序运行期间,当某个类第一次被访问到的时候,会将这个类储存到内存中的代码段区域。这个过程叫做类加载。
只有类在第一次被访问时,才会做类加载。
一但类被加载到代码段以後,直到程序结束的时候才会被释放掉。
假设下面这段写在函数之中
Person *p1 = [Person new];
@interface Person : NSObject
{
@public
NSString *_name;
int _age;
}
-(void)sayHi;
@end
@implementation Person
-(void)sayHi
{
NSLog(@"大家好,我叫%@,我今年%d岁",_name,_age);
}
@end
int main(int argc, char * argv[]) {
Person *p1 = [Person new];
NSLog(@"p1 = %p",p1);
return 0;
}
首先来执行这一段代码,
我们会发现 *p1 的确是一个地址
那麽 p1的对象还有一个isa指针。
下一个断点来看看
我们发现p1对象里面确实有一个isa的指针,但是我们无法对他进行访问。
不同的对象,指向的是同一个记忆体
6. 对象的属性默认值:如果我们创建一个对象,没有为对象的属性复职,那麽这葛对象的属性是有值的。如果属性的类型是基本的数据类型,默认值是0,如果属性的类型是C语言的指针类型,那麽就服值为NULL。如果属性的类型是OC的类指针类型,那麽就赋值为nil。
<<: iOS APP 开发 OC 第六天, 练习实作一个类
>>: iOS APP 开发 OC 第七天, nil 跟 NULL 一样吗?
今天我想介绍最後一个警告事件,顺便谈谈「元件服务」这回事,他是一个Windows系统管理工具,管理C...
条件判断 Decision Control Statement 为了应付程序可能遇到的各种状况,C ...
在 @IBAction 里 令 vc 为 UIImagePickerController let v...
Modules: struct UserInfoResponse: Decodable { var ...
如果你不知道这个系列为什麽叫这种激烈的名字可以看这篇: Day [0] — JS之浸猪笼系列 如果你...