父子控制器相关
控制器父子关系的建立原则
- 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应该为父子关系
[a.view addSubview:b.view];
[a addChildViewController:b];
// 或者
[a.view addSubview:otherView];
[otherView addSubbiew.b.view];
[a addChildViewController:b];
获得所有的子控制器
@property(nonatomic,readonly) NSArray *childViewControllers;
添加一个子控制器
//XMGOneViewController成为了self的子控制器
//self成为了XMGOneViewController的父控制器
[self addChildViewController:[[XMGOneViewController alloc] init]];
// 通过addChildViewController添加的控制器都会存在于childViewControllers数组中
获得父控制器
@property(nonatomic,readonly) UIViewController *parentViewController;
将一个控制器从它的父控制器中移除
// 控制器a从它的父控制器中移除
[a removeFromParentViewController];
static的作用:
-
修饰局部变量
- 让局部变量只初始化一次
- 局部变量在程序中只有一份内存
- 并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁)
-
修饰全局变量
- 全局变量的作用域仅限于当前文件
实现拷贝的方法
- copy
- 只会产生不可变的副本对象(比如NSString)
- mutableCopy
- 只会产生可变的副本对象(比如NSMutableString)
UIScrollView内部子控件添加约束的注意点:
- 子控件的尺寸
不能通过UIScrollView
来计算,可以考虑通过以下方式计算- 可以设置
固定值
(width==100,height==300) - 可以相对于
UIScrollView以外的其他控件
来计算尺寸
- 可以设置
- UIScrollView的
frame
应该通过子控件以外的其他控件
来计算 - UIScrollView的
contentSize
通过子控件来计算- 根据
子控件的尺寸
以及子控件与UIScrollView之间的间距
- 根据
指针p的加减法运算
- 指针p + N
- p里面存储的地址值 + N * 指针所指向类型的占用字节数
- 指针p - N
- p里面存储的地址值 - N * 指针所指向类型的占用字节数
数组名
- 存储的是
数组首元素
的地址 - 等价于:一个指向
数组首元素
的指针 -
数组名 + 1
的跨度:数组首元素
的占用字节数
其他结论
-
&num + 1
的跨度:num
的占用字节数