加载过程:
一般情况下调用 init方法或者调用initWithNibName方法实例化UIViewController, 不管调用哪个方法都为调用initWithNibName(方法定义如下)
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
接着会调用loadView方法来生成UIViewController.view
- (void)loadView
然后调用 viewDidLoad方法
- (void)viewDidLoad
如果loadView不能生成UIViewController.view系统将会反复调用loadView及viewDidLoad方法, 并且最终调用[super loadView] 方法返回UIViewController.view
然后依次调用如下2个方法, 这2个方法也十分重要, 在UINavigationController的POP操作后有时将要显示的UIViewController中的View并没有释放(也有可能释放掉) , UIViewController将不会调用上面的三个方法(initWithNibName,loadView,viewDidLoad) 而会调用下面这2个方法
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
在iOS5.0中还添加了2个函数:
- (void)viewWillLayoutSubviews ;
- (void)viewDidLayoutSubviews;
另外如果你这样写:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.view = view;
[view release];
// Custom initialization
NSLog(@”initWithNibName”);
}
return self;
}
那么loadView和viewDidLoad 方法将不会被调用
卸载过程
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
- (void)viewWillUnload;//iOS5.0添加
- (void)viewDidUnload;
- (void)dealloc;
PS: 当程序收到内存不足的警告后, 程序内存中的所有的UIViewController都将会收到didReceiveMemoryWarning调用消息. 目的是将当前不显示的UIViewController中的view释放掉(不会调用UIViewController的dealloc方法), 所以当该UIViewController再次显示的时候又要生成一次, 此时它会调用loadView-> viewDidLoad ->viewWillAppear等, 这时最容易造成内存泄漏!
- (void)didReceiveMemoryWarning;
- (void)viewWillUnload;//iOS5.0添加
- (void)viewDidUnload;
转发,请保持地址:http://blog.csdn.net/stalendp/article/details/8602281
手机游戏中动作类的游戏还是很受欢迎的,这些游戏中,大部分有着移动的背景。这篇文章将介绍使用WiEngine的wyParallaxNode类来实现这一效果。
使用wyParallaxNode,需要指定x和y轴的移动范围,其默认为[-MAX_FLOAT / 2,MAX_FLOAT / 2];下面的代码,限定了y轴不进行移动。
wyParallaxNode* parallax = wyParallaxNode::make(); parallax->setMinY(0); parallax->setMaxY(0); addChildLocked(parallax);
接着向wyParallaxNode中添加移动的sprite,我使用了两个图片作为背景(注:图片来源网络,只是用于学习目的):
其中一个用于前景,一个用于背景,以不同的速率进行移动。
要使图片进行反复迭代地出现,需要使用wyTiledSprite,定义如下:
wyTiledSprite* bg_front = wyTiledSprite::make(wyTexture2D::makePNG(RES("R.drawable.bg3"))); bg_front->setContentSize(wyDevice::winWidth, DP(115)); bg_front->setTileDirection(true, false); bg_front->setAnchor(0, 0); bg_front->setPosition(0, 0); wyTiledSprite* bg_back = wyTiledSprite::make(wyTexture2D::makePNG(RES("R.drawable.bg2"))); bg_back->setContentSize(wyDevice::winWidth, DP(115)); bg_back->setTileDirection(true, false); bg_back->setAnchor(0, 0); bg_back->setPosition(0, 0);
接着把上面定义的sprite,添加到wyParallaxNode中,并指定不同的视差比例,代码如下:
parallax->addChild(bg_back, -1, 0.1f, 1.0f); parallax->addChild(bg_front, 2, 1.0f, 2.0f);
最后让动画动起来:
wyTimer* timer = wyTimer::make(wyTargetSelector::make(this, SEL(Background::update))); scheduleLocked(timer); 。。。。。 void update(wyTargetSelector* ts) { parallax->offsetBy(5, 0); }
效果如下:
1.安装卡制作及使用(2GB以上SD/TF卡)
(1)通过以下命令,生成out_images目录下的minifs_ubi.img、rootfs_ubi.img、user_data_ubi.img
./mkimags.sh
roofs.tar.bz2下载地址
minifs.tar.bz2下载地址
u-boot.bin_nand下载地址
注明:mkimages.sh脚本文件内容如下
echo "start to make ubi images, please wait....." rm -f *.img rm -rf out_images tar jxf user_data.tar.bz2 tar jxf rootfs.tar.bz2 tar jxf minifs.tar.bz2 sync mkfs.ubifs -r user_data/ -m 8192 -e 1032192 -c 300 -o user_data.img sync ubinize -o user_data_ubi.img -m 8192 -p 1MiB -s 8192 ubinize_user_data.cfg sync mkfs.ubifs -r rootfs/ -m 8192 -e 1032192 -c 1434 -o rootfs.img sync ubinize -o rootfs_ubi.img -m 8192 -p 1MiB -s 8192 ubinize_rootfs.cfg sync cp user_data_ubi.img rootfs_ubi.img bin_images/zImage minifs/images_backup/ sync mkfs.ubifs -r minifs/ -m 8192 -e 1032192 -c 300 -o minifs.img sync ubinize -o minifs_ubi.img -m 8192 -p 1MiB -s 8192 ubinize_minifs.cfg sync mkdir out_images mv user_data_ubi.img rootfs_ubi.img minifs_ubi.img out_images/ rm -f *.img rm minifs/images_backup/* rm -rf user_data/ rootfs/ minifs/ echo "end to make ubi images!"
(2)使用fdisk命令,把SD/TF卡分两个区,第一分区为512MB,fat32格式;第二分区剩余的空间,ext4格式。
(3)把out_images目录下的minifs_ubi.img、rootfs_ubi.img、user_data_ubi.img和bin_images目录下的u-boot.bin_nand、zImage一共5个文件复制到第一分区的根目录。(4)把小文件系统minifs_sd.tar.bz2解压到第二分区(注意根文件是文件系统的所有文件和文件夹,不是解压出来的minifs_sd文件夹)
(5)在windows下使用SD-Flasher.exe工具,把bin_images/u-boot.bin_sd文件录写到SD/TF卡上。
(6)把板设置为SD/TF卡启动方式,插入制作好的SD/TF卡,开机,即开始安装。(注意,因为暂没有使用指示灯表示安装状态,所以需要接串口查看安装情况,安装完毕后会执行poweroff命令)
(7)完成后,把板设置为nand启动方式,开机启动即可。
2.系统还原
(1)在1中制件的minifs_ubi.img镜像中已经包括rootfs_ubi.img、user_data_ubi.img、zImage三个还原文件,所在目录是minifs文件系统的/images_backup下。
(2)在SD/TF卡的第一个fat32分区,创建标记文件,文件名为recovery,注意是小写和不能有后缀。
(3)在nand启动方式下,插入SD/TF卡,开机,即会进入小文件系统,进入系统后,会根据标记文件选择还原。
(4)还原成功后,会执行poweroff,拔出卡,开机即可。
3.系统升级
(1)把需要升级的镜像文件如rootfs_ubi.img、user_data_ubi.img、zImage,复制到SD/TF卡的第一个fat32分区。
(2)在SD/TF卡的第一个fat32分区,创建标记文件,文件名为update,注意是小写和不能有后缀。
(3)在nand启动方式下,插入SD/TF卡,开机,即会进入小文件系统,进入系统后,会根据标记文件选择升级。
(4)还原成功后,会执行poweroff,拔出卡,开机即可。
####################################################
在PC上制作镜像
mkfs.ubifs -r rootfs_qtopia_qt4-s-cx/ -m 8192 -e 1032192 -c 2036 -o ubifs.img
ubinize -o ubi.img -m 8192 -p 1MiB -s 8192 ubinize.cfg
命令参数
-r:制定文件内容的位置
-m:页面大小
-e:逻辑擦除块大小
-p:物理擦除块大小
-c:最大的逻辑擦除块数量(注意这个块的数量是要按照物理块大小算出来的,如块大小是1MB,芯片大小是2048MB,而该ubi的mtd分区表设置大小为2036MB,那个这个-c参数就是2036,这个块数不算上坏块数的)
-s:最小的硬件输入输出页面大小,
通过ubinfo看参数值:
ubiformat /dev/mtd2
ubiattach /dev/ubi_ctrl -m 2
ubinfo /dev/ubi0 -a
ubi0
Volumes count: 0
Logical eraseblock size: 1032192 bytes, 1008.0 KiB
Total amount of logical eraseblocks: 2030 (2095349760 bytes, 2.0 GiB)
Amount of available logical eraseblocks: 2006 (2070577152 bytes, 1.9 GiB) //这个数就是ubinize.cfg配置文件中的vol_size值)
Maximum count of volumes 128
Count of bad physical eraseblocks: 6
Count of reserved physical eraseblocks: 20
Current maximum erase counter value: 12
Minimum input/output unit size: 8192 bytes
Character device major/minor: 253:0
ubinize.cfg文件内容如下:
[ubifs]
mode=ubi
image=ubifs.img
vol_id=0
vol_size=1970MiB
vol_type=dynamic
vol_name=FriendlyARM-root
vol_alignment=1
vol_flags=autoresize
在目标板上使用:
ubiformat /dev/mtd2 -f /sdcard/ubi.img
mount -t ubifs ubi0 /mnt/
注意:当出现在目标板上使用ubiattach时出现以下信息时,需要修改ubinize.cfg文件,把vol_size改小些。
UBI error: vtbl_check: volume table check failed: record 0, error 9
# cat /sys/class/misc/ubi_ctrl/dev
10:62
#mknode /dev/ubi_ctrl c 10 62 (创建ubi_ctrl设备节点)
#cat /proc/devices
.....
251 ubi2
252 ubi1
253 ubi0
#mknode /dev/ubi0 c 253 0
#mknode /dev/ubi1 c 252 0
#mknode /dev/ubi2 c 251 0