IPHONE应用开发 资源管理项目组 2018年12月24日
常用网站 iPhone Dev Center 苹果官方网站(需注册),可查询开发指南、 可下载XCODE、SDK、开发例子、申请证书。 www.cocoachina.com 国内的开发网站,内容比较丰富,论坛上有一些常见的开发问题 www.weiphone.com 国内较早的一个开发团队 Xcode:Xcode是一个集成开发环境(IDE) Interface Builder:是用来组织创建应用程序的可视部分(用户图形界面)。 Instruments:用于分析iPhone应用程序的内部运行状况。它监控内存利用率和性能指标(分析器)。 MVC:Controller/Model/View
开发平台 开发工具: Xcode Interface Builder Instruments 开发语言:Objective-C Frameworks:Fundation、UIKit 设计模式:MVC Xcode:Xcode是一个集成开发环境(IDE) Interface Builder:是用来组织创建应用程序的可视部分(用户图形界面)。 Instruments:用于分析iPhone应用程序的内部运行状况。它监控内存利用率和性能指标(分析器)。 MVC:Controller/Model/View
开发工具 Xcode是一个集成开发环境(IDE) Interface Builder:是用来组织创建应用程序的可视部分(用户图形界面)。 Instruments:用于分析iPhone应用程序的内部运行状况。它监控内存利用率和性能指标(分析器)。
“.h”是接口文件 开发语言Objective-C #import <Foundation/Foundation.h> //代表导入系统文件 @interface //接口标识 RemoteResource : NSObject //接口名 { NSString *cityId; } // @property : Objective-C 2.0引入此编译器,在接口文件中简化代码 @property (nonatomic, retain) NSString *cityId; (void)importData:(NSString *)cityId; (NSArray *)foo: (int)zap bar:(double)pow; @end “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 5 5
“.m”是实现文件 开发语言Objective-C #import “ RemoteResource.h” #import “P_Point.h” //代表导入本项目文件 @implementation RemoteResource //实现标识 @synthesize cityId; // @synthesize:Objective-C 2.0 引入此编译器,在实现文件中消除getter、setter方法 (void)importData:(NSString *)cityId { ……..} (NSArray *)foo: (int)zap bar:(double)pow {……. return aNSArray; } @end “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 6 6
“.h”是接口文件 开发语言Objective-C #import <UIKit/UIKit.h> //代表导入系统文件 #import “ RemoteResource.h” @interface //接口标识 ViewController : UIViewController // 视图控制类 { RemoteResource *resObj; //自定义类 UIView *displayView; } @property (nonatomic, retain) RemoteResource * resObj; // IBOutlet ,代表此控件可与Interface Builder中的控件关联。 @property (nonatomic, retain) IBOutlet UIView *displayView; // IBAction, 代表此方法可与Interface Builder中的控件关联,作为触发事件 - (IBAction)togglePickers:(id)sender; @end “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 7 7
内存管理规则 当使用retain、new、alloc或copy方法创建一个对象时,该对象的保留计数器值为1。当不再使用该对象时,一定要负责向该对象发送一条release 或autorelease消息。这样,该对象将在使用寿命结束时被销毁。 当通过任何其他地方获得一个对象时,则假设该对象的保留计数器值为1,而且已经被设置为自动释放,你不需要执行任何操作来确保该对象被清理。如果你打算在一段时间内拥有该对象,则需要保留(retain)它并确保在操作完成时释放它。 如果你保留了某个对象,你需要(最终)释放或自动释放该对象。必须保持retain方法和release方法的使用次数相等。(可通过 [obj retainCount];输出计数器的数值) “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 8 8
“.xib”是窗体文件 Library:控件库 Inspector:控件属性 Reveal :控件集合展示 Interface Builder “.xib”是窗体文件 Library:控件库 Inspector:控件属性 Reveal :控件集合展示 “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 9 9
Library Inspector Reveal Interface Builder Library Inspector Reveal “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 10 10
Library Inspector Reveal Interface Builder Library Inspector Reveal “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 11 11
基本控件介绍----Views UIWindow:一个iPhone应用只有一个UIWindow UIView: 一个UIView只有一个superview – (UIView *)superview 一个UIView有零或多个subview – (NSArray *) subviews 常用方法: – (void) addSubView: (UIView *) aView; //添加视图 – (void) removeFromSuperview; //移除视图 – (void) insertSubview:(UIView *) aView atIndex:(int)index; – (void) intserSubview:(UIView *) aView belowSubview:(UIView *)otherView; – (void) insertSubview:(UIView *) aView aboveSubView:(UIView *)otherView; aView.hidden = YES / NO; “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 12 12
基本控件介绍----Views 如何与Interface Builder 中的视图关联? 在接口和实现文件中声明定义View。 IBOutlet UIView *displayView; 在Interface Builder 中设计View。 将定义的View与设计View关联。 “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 13 13
基本控件介绍----Views 如何控制视图大小? UIView *theView = [[UIView alloc] initWithFrame:CGRectMake(0.0,0.0,480,300)]; CGRectMake(origin,size) “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 14 14
基本控件介绍----TableViews “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 15 15
基本控件介绍----TableViews Table Header Section Header Section Footer … Table Footer “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 16 16
基本控件介绍----TableViews Table Header Section Header Table Cell Section Footer … Table Footer “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 17 17
基本控件介绍----TableViews TableViewDataSource //设置Section个数,默认是一个 (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; //设置Section中的行数(必须设置) (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section ; //设置每行的内容(必须设置) - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 18 18
基本控件介绍----TableViews TableViewDataSource NSIndexPath :Section index + row index “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 19 19
基本控件介绍----TableViews TableViewDataSource //cell的定义 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellID]; //更新tableView [self.tableView reloadData]; //选择某行,触发事件 (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSUInteger row = indexPath.row; //获取行号 id objectText = [myObjects objectAtIndex: row]; //获取数组中的值 } “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 20 20
基本控件介绍----TableViews 数据来源 Call 服务器端(servlet )---》返回流文件--》解析 解析方法: 1、sqlLite 2、json 3、其他 “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 21 21
程序发布 真机调试:需在苹果网站购买99$(100用户)或299$的证书; 1、公共应用:发布到App Store,需经苹果公司审核 2、 企业应用:Ad Hoc 3、其他 “NS”前缀的函数代表来自Cocoa工具包 Setter/getter方法中,getter方法不能使用get这个词,这与java是不同的 22 22