您的位置:首页 > 移动开发 > IOS开发

ios开发一般思路

2016-01-05 16:39 302 查看
需求分析

功能分析(需要设计那些类)
类设计(和方法的设计)
雪花效果(功能的实现思路)
思路:
A.需求分析
我们想要达到一种什么样的效果?(同时画出效果图片)
我们希望雪花从上到下飘落下来(飘飘洒洒)
在程序中就是雪花图片从上到下的飘落;

如右图就是我们想要达到的效果.(需求分析);
B.功能分析
目前来看,程序中能够表现出现实世界的东西大多是图片或者像素色的(虚拟)
又我们的需求可知,我们需要虚拟背景和雪花以及雪花有到无飘落的过程
.
1.我们需要贴背景图
2.我们需要贴雪花的图片
3.雪花需要从上到下的飘落
4.雪花需要被创建和销毁.(其实雪花不销毁再短时间内事可以的,但是考虑到内存的大小,一个雪花对象还是要被销毁的.)
C.类设计(类分析)
1.由功能分析我们可以知道,这个功能只设计成一个类便很好
so! 我们可以设计一个snow类,
c1方法设计
1.createBackGroundImage //func1
2.createSnow //func2
3.创建了雪花以后雪花还要飘落,需要在设计一个action方法
fly//fun3
4.deleteSnow// func4
======>>>>>>等等,create delete 这些关键词,好吧,我们还应该设计一个manager类来控制create和delete
4SnowManager
{管理方法一般是用来对对象进行正删改查的.既然是正删改查一般来讲是需要一个来保存对象指针的对象来存储这些对象指针的,目前可以用来保存对象的对象有 数组,字典,链表,图,集合等,通过一些逻辑判断在何时创建,在何时销毁.}
c2.画图uml图就好.

class:snow

createBackGround():void

createManager():void

createSnow():void

SnowFly():void

deleteFly():void
snow.h类图

备注:上面的只是最简单地功能的分析于实现
1.类间关系:
a.封装
b.继承
3.实现(实现里面很经典的一个是代理).
2个人认为设计模式其实也是类间的关系.已集成为主(用java编程的术语就是面向接口编程,对应我们的iOS编程就是protol编程) 观察者模式,工厂模式,header first 设计模式
在实现action时 我们经常用的是监听方法
例如button控件是一个最基本的监听方法,(跳转).
源码:
appdelegate.h
#import <UIKit/UIKit.h>

@interface KGAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong,nonatomic) UIWindow *window;

@end
appdelegate.m

#import "KGAppDelegate.h"
#import "KGSnow.h"
@implementation KGAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];

//创建一个雪花类的对象,然后将这个对象加载到屏幕上
KGSnow * snow = [[KGSnow alloc]init];
[self.window addSubview:snow];

[self.window makeKeyAndVisible];
returnYES;
}
snow.h
#import <UIKit/UIKit.h>

@interface KGSnow : UIView

@end
snow.m
#import "KGSnow.h"

@implementation KGSnow
{
//创建一个用来管理雪花的数组
NSMutableArray * _sonws;
}

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code

//初始化数组,一定不要忘了
_sonws = [[NSMutableArray alloc]init];

//通过获取屏幕的大小来初始当前雪花类对象的大小
self.frame = [UIScreen mainScreen].bounds;

//设置背景图片
[self setBackgroundImage];

//启动定时器,开始下雪
[self startTimer];

}
returnself;
}
//这个方法用来去设置背景图片
-(void)setBackgroundImage
{
UIImage * image = [UIImage imageNamed:@"1_24.jpg"];
self.backgroundColor = [UIColor colorWithPatternImage:image];
}

//启动定时器的方法
-(void)startTimer
{
//使用定时器去管理雪花
[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(managerSnows)
userInfo:nil repeats:YES];
}
//这个方法,是用来去管理雪花
-(void)managerSnows
{
[self creatSnow];
[self fly];
[self memoryManager];
}
//创建雪花
-(void)creatSnow
{
int x = arc4random() %310;
UIView * view = [[UIView alloc]initWithFrame:CGRectMake(x,20,
20,20)];
view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"未命名"]];
//将雪花加到背景图片
[self addSubview:view];
//将雪花加到数组中,方便后面的管理
[_sonws addObject:view];
}
//让雪花飞起来
-(void)fly
{
for (UIView * snowin _sonws) {
//获取当前雪花的中心点
CGPoint center = snow.center;
center.y = center.y + arc4random() %
5;
center.x = center.x + arc4random() %
3 - 1;
snow.center = center;
}
}
//进行内存管理
-(void)memoryManager
{
for (int i =0;i<_sonws.count;i++) {
UIView * snow = [_sonws objectAtIndex:i];
if (snow.center.y >450) {
//如果大于450,那么就不让他去飘了
[_sonws removeObject:snow];
//如果要从屏幕上将雪花删除掉,那么需要从屏幕上去移除掉这个视图
[snow removeFromSuperview];

i--;
}
}
}

@end

第二部分
调bug
1.根据生存周期来进行调bug,最经典的就是nslog();这也是我最经常使用的方法
2.设置断点
3.lldb的方式,就是利用控制台,和条件语句来进行
例如.po 对象名, r 等等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: