iOS第三天认识及了解注意
来源:互联网 发布:淘宝网店域名怎么改 编辑:程序博客网 时间:2024/06/09 15:44
#import和#include
用#import导入Objective-C或Objective-C++头文件,用#include导入C或C++头文件
根据头文件的语言去选择合适的导入方式。
当导入的头文件使用Objective-C或Objective-C++语言时,使用#import.
当导入标准C或C++头文件时,使用#include.头文件应该使用自己的#define重加载保护
整形的转换为BOOL型的时候要小心。不要直接和YES做比较
Idea:当做笔记时能否把图片上的文字扫描成文本?
ViewController的loadView、viewDidLoad、viewDidUnload分别是什么时候调用的,在自定义ViewCointroller时在这几个函数中应该做什么工作?
由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起
init方法
在init方法中实例化必要的对象(遵从LazyLoad思想)
init方法中初始化ViewController本身
loadView方法
当view需要被展示而它却是nil时,viewController会调用该方法。不要直接调用该方法。
如果手工维护views,必须重载重写该方法
如果使用IB维护views,必须不能重载重写该方法
loadView和IB构建view
你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。如果设备内存不足的时候, view控制器会收到didReceiveMemoryWarning的消息。默认的实现是检查当前控制器的view是否在使用。如果它的view不在当前正在使用的viewhierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release, loadView方法将被再次调用来创建一个新的view。
viewDidLoad方法
viewDidLoad此方法只有当view从nib文件初始化的时候才被调用。
重载重写该方法以进一步定制view
在iPhone OS 3.0及之后的版本中,还应该重载重写viewDidUnload来释放对view的任何索引
viewDidLoad后调用数据Model
viewDidUnload方法
当系统内存吃紧的时候会调用该方法(注:viewController没有被dealloc)
内存吃紧时,在iPhone OS 3.0之前didReceiveMemoryWarning是释放无用内存的唯一方式,但是OS3.0及以后viewDidUnload方法是更好的方式
在该方法中将所有IBOutlet(无论是property还是实例变量)置为nil(系统release view时已经将其release掉了)
在该方法中释放其他与view有关的对象、其他在运行时创建(但非系统必须)的对象、在viewDidLoad中被创建的对象、缓存数据等 release对象后,将对象置为nil(IBOutlet只需要将其置为nil,系统release view时已经将其release掉了)
一般认为viewDidUnload是viewDidLoad的镜像,因为当view被重新请求时,viewDidLoad还会重新被执行
viewDidUnload中被release的对象必须是很容易被重新创建的对象(比如在viewDidLoad或其他方法中创建的对象),不要release用户数据或其他很难被重新创建的对象
dealloc方法
viewDidUnload和dealloc方法没有关联,dealloc还是继续做它该做的事情
带多个参数
对C Family程序员来说,这是最难接受的,最反人类的:
- (void) setColorToRed: (float)red Green:(float)green Blue:(float)blue {...} //定义方法
[myObj setColorToRed: 1.0 Green: 0.8 Blue: 0.2]; //调用方法
消息嵌套
UINavigationBar *bar = [[[UINavigationBar alloc]init] autorelease];
类方法有一个加号前缀;实例方法有一个减号前缀
类方法和实例方法
类方法
类方法就是Java、PHP里的Static Method,不用实例化就能调。类方法有一个加号前缀。示例:
类定义
@interface MyClass
+(void) sayHello;
@end
@implementationMyClass
+(void)sayHello {
NSLog(@"Hello,World");
}
@end
使用
[MyClass sayHello];
实例方法
实例方法就是Java、PHP里的普通方法,必须实例化才能调。实例方法有一个减号前缀。示例:
类定义
@interface MyClass : NSObject
-(void) sayHello;
@end
@implementationMyClass
-(void)sayHello {
NSLog(@"Hello,World");
}
@end
使用
mycls = [MyClass new];
[mycls sayHello];
- iOS第三天认识及了解注意
- IOS 学习第三天
- iOS第三天
- 第三天 iOS自动更新
- 学习IOS的第三天
- Objective - C基础: 第三天 - 1.NSString的基本认识
- iOS学习——第三天
- iOS-学习笔记-UI-第三天
- IOS第三天_面向对象1
- 第三天 -- UIApplication单例 iOS
- IOS开发第三天-内存管理
- IOS开发第三天-内存管理2
- IOS开发第三天-Foundation框架
- 学习J2EE第三天(Cloudscape数据库的安装和了解)
- 对Java数组的了解及认识
- 了解Spring @Around使用及注意
- 第三天
- 第三天
- 每天学习一点新东西——vim篇(二)
- Enum类型
- Zookeeper(一)安装
- C语言中的数组与指针的关系
- 函数返回引用的注意事项
- iOS第三天认识及了解注意
- LeetCode 合并k个有序链表
- USACO Ski Course Design(枚举)
- 剑指off-反转链表
- UGO权限问题
- spring junit 做单元测试,报 Failed to load ApplicationContext 错误。
- some record in matlab code
- POJ 2676 Sudoku
- Jar mismatch! Fix your dependencies