博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【iOS Programming: The Big Nerd Ranch Guide】【笔记】2
阅读量:4964 次
发布时间:2019-06-12

本文共 1690 字,大约阅读时间需要 5 分钟。

ARC内存管理

栈用于存储方法的局部变量

堆用于存储对象

ARC Automatic Reference Counting 自动引用计数

弱应用(weak reference)用于避免循环引用导致的内存释放不了的问题

  

@property

属性的名称是成员变量的名称去掉下划线,申明了属性后会自动在编译期生成带下划线的成员变量和相应的setter、getter方法

 

@property的属性

读写属性 

readonly(只读)  只生成getter

readwrite(读写)  生成setter和getter

 

内存属性

strong  强引用

weak   弱引用

copy    对象拷贝 多用于 NSString NSMutableString NSArray NSMutableArray

为了避免其他操作对该对象的影响

assign   基础类型变量 

 

注意:如果覆写(override)了一个属性setter和getter方法,编译器就不会自动生成相应的成员变量,需要开发者自己声明

@synthesize age = _age;  

@synthesize age;  OR @synthesize age = age; 只生成setter、getter方法,不生成成员变量

   

Autorelease

主要用于生成对象并返回的类方法中

比如:

+ (BNRItem *)someItem

{

    BNRItem *item = [[[BNRItem alloc] init] autorelease];

    return item;

}

  

@autoreleasepool{} 当这个方法块运行结束,所有对象将会被引用计数-1

 

View

一个view是UIView的实例或者是它的子类

view可以绘制自己

view可以响应触摸等事件

view存在于一个view树,这个树的根节点是应用的window对象

 

为了避免循环引用,属性superview都是弱应用

  

CGRect中的参数的单位都是“点”而不是像素,这样就不用考虑适配不同分辨率的问题

在视网膜屏幕上,一个点代表四个像素(2x2),普通屏幕上一个点就表示一个像素

 

UIView的frame和bounds的区别

bounds是view的内部坐标系,frame代表本身在superview坐标系的信息

 

在头文件和实现文件(*.m)中声明属相的区别

在头文件中声明的属性和方法对外部是可见的,在实现文件中声明的对外部不可见

 

ViewController

 一个ViewController的view只有在需要显示在屏幕上时才会创建,这个中懒加载的方式可以节约内存提高性能

 

ViewController有两种方法创建它的视图树:

1.在代码中覆写UIViewController的loadView方法

2.在Interface Builder中创建NIB文件

 

当一个ViewController创建后他的view属性是为nil的,这时就会调用loadView方法

 

- (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中调用UIView的setRootViewController方法设置一个rootViewController,并且加载其view添加到window中,并且自动设置该view的大小和window的大小一致

 

viewDidLoad只会在ViewController的生命周期中调用一次,viewWillAppear每次重新出现在屏幕都会回调

 

ViewController生命周期

 

KVC (key-value coding)

- (id)valueForKey:(NSString *)k;

- (void)setValue:(id)v forKey:(NSString *)k; 

转载于:https://www.cnblogs.com/afluy/p/5018963.html

你可能感兴趣的文章
[Leetcode Week13]Search a 2D Matrix
查看>>
查看端口占用cmd命令
查看>>
2019.01.17王苛震作业
查看>>
清除浮动
查看>>
PayPal(贝宝)支付接口、文档、IPN
查看>>
ORACLE 10G R2_执行计划中cost cardinality bytes cpu_cost io_cost解释
查看>>
本地存储
查看>>
MP3的播放与停止
查看>>
牛客(59)按之字形顺序打印二叉树
查看>>
JavaScript 图表库 xCharts
查看>>
Android项目的目录结构
查看>>
C++中“引用”的底层实现
查看>>
Spring Cloud与微服务构建:微服务简介
查看>>
Babel 是干什么的
查看>>
cocos2dx-3.0(8)------Label、LabelTTF、LabelAtlas、LabelBMFont使用之法
查看>>
CODE[VS] 1842 递归第一次
查看>>
20180418小测
查看>>
数字三角形
查看>>
NGUI 减少drawcall规则
查看>>
三元表达,匿名函数
查看>>