- 可以通过特定的API访问一些系统资源,如图片库、地址簿等
- 在有网络链接时可以访问网络资源
- 能量消耗
- CPU负载
- 发热,电池消耗过快
- 算法优化
- 用户使用习惯
- 快速启动,短暂使用
- 随时可能退出
- 避免多余的“帮助”
- 自动保存
Hello,There App
1.Create a new Xcode project:
2.Single View Application
3.Options for new project:
4.选择项目存放路径,然后生成了如下的项目结构:
5.然后编辑Main.storyboard(故事板?),选择ViewController
6.拖动Lable对象到Main.storyboard上面,双击可以编辑,改成我们需要的文字即可
运行效果:
2015-04-15
- iOS模拟器不支持依赖于硬件的特性,如加速计和摄像头功能。也不支持将d应用程序下载到实际的iOS设备中,也不能在AppStore上分发应用程序。
- 注册iOS开发者:
- 99美元/年
- 299美元/年
- Cocoa Touch使用的是Objective-C 2.0,但该语言的一个关键特性在iOS中并不可用:垃圾回收。
2015-04-17
- OC是在C语言的基础之上,增加了一层最小的面向对象语法。因为OC是基于C语言的,所以完全兼容C语言,甚至C++
- OC没有包名(命名空间)的概念,开发人员给类名加上前缀,放置类名冲突
- 为了防止与C语言、C++关键字冲突,OC关键字都以@开头。
- 语法要点:
- 基本数据类型:char,int,float,double,BOOL(YES\NO)
- nil相当于Java中的null
- self相当于Java的this
- for循环快速遍历fot(xx in xx)
- 基类 NSObject
- 继承:单继承,用super关键字引用父类对象
- 异常处理 @try @catch @finally
- 注释: // 和 /……/
- 日志输出:NSLog{@”Hello”}; NSLog{@”Age is %i”,23};
第一个OC程序:
Automatic Reference Counting(ARC)自动加释放内存代码
- import相比include,防止重复包含。include的头文件(*.h)里需要添加:
#ifndef ___OC___Header_h
#define ___OC___Header_h
#endif
import不需要添加以上代码。
1.OS X>Application>Command Line Tool
2.Type:Founction
3.代码
4.运行效果
- OC类包含两个文件:
- .h 类的声明文件,用于声明变量,方法(函数)
- .m 类的实现文件,用于实现.h中的方法
- 类的声明使用关键字 ‘@interface @end
- 类的实现使用关键字@implementation @end
- 新建一个OC类:
1.右键Project,New File,然后iOS>Cocoa Touch>Objective-C class
2.输入类名,继承父类NSObject
3.生成代码ZMSClass.h和ZMSClass.m:
4.OC用冒号(:)表示继承,如:
/*
*/
#import <Foundation/Foundation.h>
@interface ZMSClass : NSObject{
// 成员变量定义到大括号之内
int number;
//float time;
}
// 静态方法(+):用类名调用的方法;
// 动态方法(-):用对象调用的方法
// number的Get方法,不实现
// - (float)time;
// number的Set方法,不实现
- (void)setNumberint)newNumber;
// - (void)setNumberint)newNumber setTimefloat)newTime;
@end
- OC在.h中声明的所有方法都是公共的
- OC中一个冒号对应接收一个参数
/*
#import “ZMSClass.h”
@implementation ZMSClass
NSLog(@“调用了number的get方法”);
return number;
}
// -time{
// NSLog(@“调用了time的get方法”);
// return time;
//}
- (void)SetNumberint)number{
number = newNumber;
NSLog(@“调用了number的set方法”);
}
// - (void)setNumberint)newNumber setTimefloat)newTime{
// number = newNumber;
// time = newTime;
// }
@end
- 创建一个ZMSClass对象:
- 1.调用一个静态方法+(id)alloc来分配内存,用指针进行接收
- 2.调用一个动态方法-(id)init进行初始化
/*
#import <Foundation/Foundation.h>
#import “ZMSClass.h”
int main(int argc, const *argv[])
{
@autorelasepool{
// 用指针存储对象的地址
ZMSClass *zms = [ZMSClass alloc];
zms = [zmsClss init];
// 以上两行可以简写为:
// ZMSClass *zms[[ZMSClass alloc] init]
[zmsClass setNumber:55];
int number = [zms number];
NSLog(@“Number is %i”,number);
[zms SetNumber:555 setTime:555.55];
NSLog(@“Number is %i and time is %f”,[zms number],[zms time]);
// 释放对象
[zms release];
}
return 0;
}
import导入*.h,系统的
<>
,自写的用
“”
2015-04-20
- 属性就是让类外可以访问成员变量
- 类内使用成员变量,类外使用属性
// People.h
#import <Foundation/Foundation.h>
@interface People : NSObject
{
// 推荐成员变量加_,Xcode新版本不需要再在.h文件中写成员变量
NSString * _peopleName;
int _peopleAge;
int _peopleSex;
}
@property(nonatomic,strong)NSString *peopleName;
@end
// main.m
People *people = [[People alloc]init];
perople.peopleName = @“周木水”;
NSLog(@“peopleName - %@”, people.peopleName);
2015-06-22
IB(Interface Builder)
- IB支持两种文件类型:使用.nib扩展名的旧格式和使用.xib的新格式。
- 每个nib文件最初有同样的两个图标:File’s Owner和First Responder。他们是自动创建且不能删除的。
首先打开storyboard,添加一个根View,然后把其他组件放置到这个view之中查看效果。
View修改以下背景色,其他属性保持默认,不做修改:
Label
label类似Android的TextView。
拖拽一个Label到storyboard:
其文字内容可双击或输入修改。
效果图:
Slider
slider类似Android的SeekBar:
Switch
更多学习和讨论,欢迎加入我们!
有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
这里有2000+小伙伴,让你的学习不寂寞~·
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
20370)
效果图:
Slider
slider类似Android的SeekBar:
Switch
[外链图片转存中…(img-tZNFsUlc-1715366392076)]
更多学习和讨论,欢迎加入我们!
有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
这里有2000+小伙伴,让你的学习不寂寞~·
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |