Chinaunix首页 | 论坛 | 博客
  • 博客访问: 872704
  • 博文数量: 322
  • 博客积分: 6688
  • 博客等级: 准将
  • 技术积分: 3626
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-19 11:26
文章分类

全部博文(322)

文章存档

2013年(5)

2012年(66)

2011年(87)

2010年(164)

分类: BSD

2012-02-09 11:56:24

1、.h:头文件,.m: 代码
2、self:指本身,super:指父类,
3、BOOL:YES/NO YES=1,NO=0,
NSLog(@"YES is %d",YES); 输出YES或NO时使用%d,
BOOL boolValue; 初始化后boolValue为null,
4、import/include:包含头文件
import:保证头文件只包含一次,
include:可能会将头文件包含多次,
5、类的定义:
#import
@interface MyObject : NSObject 
{
int number;
}
- (void) setNumber: (int) num;
- (int) getNumber;
@end

@implementation MyObject
- (void) setNumer: (int) num
{
number = num;
}
- (int) getNumber
{
return number;
}
@end

-: 实例方法,instance method
:类方法,即静态方法 class method

.h: 文件内来定义类、属性和方法说明,
.m: 实现类的方法

属性在interface内定义,{}之内,可以使用@private、@protected(缺省)、@public来修饰
方法前面不加private或protected来修饰
NSObject 根类:自定义类来继承NSObject,可以使用NSObject的alloc和init,来创建和初始化对象
类名首字母需要大写,实例名首字母小写

消息:对象可以执行的操作,[object message:param];
nil 相当于 java中的null即nil == Null

objective-c中的类对象必须动态的创建,均为指针类型
NSObject定义了创建对象的类方法,即alloc和初始化方法init,
alloc:分配内存,类方法
init:初始化对象,实例方法
eg: MyObject *obj = [[MyObject alloc] init];

含有多个参数的方法:
eg:- (void) message: (type) param paramName:(type) param;
- (void) setWidth: (int) w height: (int) h;

自定义对象初始化方法,可以重载init来自定义初始化方法

C类型与Obj-C类型字符串转换方法:
NSString *str = @"hello world";
属性property存取:
obj-c2.0之前必须使用getter/setter来定义,
2.0之后,可以使用@property来定义来存取对象属性,使用@synthesize以取代getter/setter
@property type name;/@property (attributes) type name;
@synthesize name;
可以通过"."来得到对象的属性,即obj.name
attributes:
1、readwrite:缺省值,该属性可读可写,
2、readonly:该属性只读不可写
3、nonatomic:非多线程使用,提高存取性能
4、atomic:多线程使用
5、retain:
内存管理:
Objective-C中的对象必须为动态的创建,需要自己管理对象的创建、初始化。
引用计数:需要使用某个对象时,使用alloc消息、retain消息或copy消息将该对象的引用计数加1,当不再使用该对象时,使用release消息来将引用计数减1,当引用计数变为0后(即没有任何一个对象来引用这个对象),会自动撤销该对象所占用的内存即自动调用dealloc。
dealloc不会直接手动调用
retainCount会自动统计引用计数
autorelease和NSAutoReleasePool
NSAutoReleasePool包含了所有可以autorelease的对象

 protocol:是一组方法,这些方法必须有遵循 该协议的任何一个类来实现。
@protocol MyProtocol
- (void) print: (NSString *) name;
@end

protocol 解决Objective-C中无法多继承的问题
category:在不通过继承的情况下来扩展某个类的功能,即可以为该类增加成员函数,而无需指带该类的实现细节及源代码。
category中不能定义属性,只能定义方法,定义的方法会覆盖该类中原有的方法。
eg:
Utilities.h
#import
@interface NSString(Utilities)
- (BOOL) isURL;
@end
iOS体系结构
Cocoa Cocoa Touch
Media Media
Core Services Core Services
Core OS Core OS
Mac OS X iPhone OS
最底层Core OS,操作系统的基础,负责内存、文件系统、网络及其他一些操作系统任务的管理并直接与硬件交互,组件包含:OS X kernel、Mach 3.0、BSD、Sockets、Security、Power Management、Keychain、Certificates、File System、Bonjour等。

Core Services(核心服务层)提供对于iPhone操作系统功能最基本的存取,组件包含:Collections、Address Book、Networking、File Access、SQLite、Core Location、Net Service、Threading、Preference、URL Utilities等。

Media(媒体层)iPhone应用程序中可以使用的多媒体服务,组件包含Core Audio、OpenGL、Audio Mixing、Audio Recording、Video Playback、JPG/PNG/TIFF、PDF、Quartz、Core Animation、OpenGL ES。
Cocoa Touch提供iPhond、iPod Touch等编程接口的各种API库,组件包含Multi-Touch Events、Multi-Touch controls、Accelermeter、View Hierarchy、Localization、Alerts、Web-Views、People Picker、Image Picker、Controllers。

Foundation Framework、UIKitFramework

Foundation Framewor:
NSNumber、NSInteger、NSString......类,需要动态创建。

NSString、NSMutableString
NSString:创建后不可变更
NSMutableString:可以动态的变更

NSArray、NSMutableArray
NSArray:定长,存放的是对象不是基本数据类型
NSMutableArray:长度可以变更

UIKit Framework:提供了用于构建、管理iOS应用程序用户界面(UI)的类

Model-View-Controller:分离数据和界面
Model:应用程序所管理的数据
View:应用程序的可视化界面
Controller:Model和View之间的桥梁,接受用户请求并将请求传递到Model,通过后者的动作就结果返回给适当的View来进行展示。
目的:将应用程序的界面与业务逻辑、数据进行分离 

UIView、UIViewController

Delegate模式:一个对象周期性的向被指定为其委托另一个对象发送消息,向其请求输入或者通知某件事情正在发生,该模式可以替换类继承来对可复用对象的功能进行扩展。
通过协议来实现。

UIApplicationMain函数:
1、创建UIApplication对象
2、在info.plist中寻找由NSMainNib键值所定义的主窗口界面MainWindow.xib,将其装入内存并实例化其中的对象。
3、将自己(UIApplication)作为File's Owner传入。

所有iOS程序只有一个窗口UIWindow(主窗口),该窗口可以叠加任意多个视图(View)以展示不同的界面。

UIView中的方法:
addSubview/insertSubView/removeFromSuperview

IBOutlet:表示代码中的属性对象要与界面对象关联
IBAction:表示某个事件的相应函数。

对象关联:
在控制器类中定义属性对象,加IBOutlet修饰,通过IB操作将该属性对象与Xib界面中的相应对象进行连接,从而达到关联的目的。

不要˙直接在UIWindow中放置控件

UINavigationController程序架构
导航过程中用户与每个界面的交互都由各自的UIViewController或子类控制器管理,
UINavigationController对象用数组来保存导航过程中的各个控制器对象(至少一个)并控制导航的进行,这个数组成为导航堆栈,堆栈最底层(下标为0)控制器成为RootViewController。 

UINavigationController导航堆栈操作方法:
initWithRootViewController
pushViewController
back按钮会自动执行pop操作。

阅读(840) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~