1.方法声明:
-(void)
setNumerator: (int) d;
-代表对象方法,+代表类方法(静态方法)
(void):返回值
setNumerator:方法名
(int)
d:第一个参数类型和参数名
2.obc可调用c++代码(.mm结尾)
3.#import取代#include,可以防止重复include
4.字符串:NSString
NSString *string1 = @"abc";//字符串常量前必须加@
5.类声明:
Fraction.h
§ #import <Foundation/NSObject.h>
§
§ @interface Fraction: NSObject {
§ int numerator;
§ int denominator;
§ }
§
§ -(void) print;
§ -(void) setNumerator: (int) d;
§ -(void) setDenominator: (int) d;
§ -(int) numerator;
§ -(int) denominator;
§ @end
继承(inheritance)以 Class:
Parent 表示,就像上面的 Fraction: NSObject。
夹在 @interface
Class: Parent { .... } 中的称为 instance
variables。
没有设定访问权限(protected,
public, private)时,预设的访问权限为protected。属性有权限,方法没有权限声明,都是public
方法如果有多个参数,除第一个参数外,后面参数都要有一个lable,这个跟其他语言非常不一样:
-(void) setX:(int)x:andSetY:(int)y;
这个函数名实际上就是setX:andSetY:
调用时第二个及以上的参数也要加上lable:
[this setX:1 andSetY:2]
类实现:
Fraction.m
§ #import "Fraction.h"
§ #import <stdio.h>
§
§ @implementation Fraction
§ -(void) print {
§ printf( "%i/%i", numerator, denominator );
§ }
§
§ -(void) setNumerator: (int) n {
§ numerator = n;
§ }
§
§ -(void) setDenominator: (int) d {
§ denominator = d;
§ }
§
§ -(int) denominator {
§ return denominator;
§ }
§
§ -(int) numerator {
§ return numerator;
§ }
@end
调用:
main.m
§ #import <stdio.h>
§ #import "Fraction.h"
§
§ int main( int argc, const char *argv[] ) {
§ // create a new instance
§ Fraction *frac = [[Fraction alloc] init];
§
§ // set the values
§ [frac setNumerator: 1];
§ [frac setDenominator: 3];
§
§ // print it
§ printf( "The fraction is: " );
§ [frac print];
§ printf( "/n" );
§
§ // free memory
§ [frac release];
§
§ return 0;
}
除了基本的数据类型(如int,NSUinteger(用宏定义的无符号int))和结构体(如NSRange)外,其余对象都是用指针来操作的
6.obc只能单继承
7.super代表父类对象指针,this代表本对象指针
8.默认的构造函数为
-(void) init
也可以叫其他名字:
-(Fraction *) initWithNumerator:(int)n denominator:(int)d
{
self = [super init];
if(self){//等同于(self != Nil)
[self setNumerator: n andDenominator: d];//setNumerator是另一个方法,带2个参数,设置两个成员变量的值
}
return self;
}
9.属性权限声明
Access.h
§ #import <Foundation/NSObject.h>
§
§ @interface Access: NSObject {
§ @public
§ int publicVar;
§ @private
§ int privateVar;
§ int privateVar2;
§ @protected
§ int protectedVar;
§ }
@end
Access.m
§ #import "Access.h"
§
§ @implementation Access
@end
main.m
§ #import "Access.h"
§ #import <stdio.h>
§
§ int main( int argc, const char *argv[] ) {
§ Access *a = [[Access alloc] init];
§
§ // works
§ a->publicVar = 5;
§ printf( "public var: %i/n", a->publicVar );
§
§ // doesn't compile
§ //a->privateVar = 10;
§ //printf( "private var: %i/n", a->privateVar );
§
§ [a release];
§ return 0;
}
10.静态方法直至用类名调用:
[ClassName staitcMothedName]
11.init,initialize,load:
initialize相当于java中的static区块:
pubic Class A{
static{
a = 0;
}
private int a;
}
在类第一次加载的时候调用,并且会先调用父类的static区块
load是程序打开后就会执行的,相当于c++的静态变量,c++最先执行的是静态变量的初始化
load也是先调用父类再调用自己
init:默认的构造函数,先父类再自己
12.异常:
抛出异常:
NSException
*e = [NSException
§ exceptionWithName: @"CupUnderflowException"
§ reason: @"The level is below 0"
§ userInfo: nil];
§ @throw e;
@try {
...
} @catch ( NSException *e ) {
...
}
@finally
{
...
}
13.id类型用于指代任意对象的指针,相当于void *,但是只能指向对象,不能指向基本类型,obc跟java和c++不一样,不需要知道对象的类型就可以调用方法,即可以用id做为指针调用其指向对象的方法,而不需要强转
14.子类的指针不能赋值给父类的指针
15.-(void) setX:(int)x: andSetY:(int)y;
obc通常这样声明一个函数,可以任务函数名作为第一个参数的标签,所有参数的标签加起来才代表整个函数的意义
-
类
d
d
一. 杭州GDG mini DevFest(谷歌开发者节)
时间:11月10日 周六 下午13点开始;地点:杭州市西湖区文一西路75号(杭州数字娱乐产业园)3号楼3楼
简要日程:
13:00 – 13:15 签到
13:15 – 13: 55 Bill Luan: 《DevFest及GDG情况介绍》
14:00 – 14:45 Holly Lee: 《Android&NDK》
14:45 – 14:55 Q&A
15:00 – 15:45 Phus Lu: 《Golang&Go*gent》
15:45 – 15:55 Q&A
15:55 – 16:15 茶歇
16:15 – 16:45 杭州GDG: 《Google IO 2012 设备Show》
16:45 – 17:15 杭州GDG: 《Android&ADK》
17:15 – 20:00 杭州GDG: Android、Golang等趣味编码或解题比赛,提供点心及会后聚餐
活动介绍页面
二. 杭州GDG周三聚会
(本期话题是Golang,原定的为11月14日,但与11月10日 DevFest的Golang话题很近,所以合并)
时间:周六 下午18点开始;地点:杭州市西湖区文一西路75号(杭州数字娱乐产业园)3号楼3楼
活动介绍页面
MDCC大会已经顺利落下帷幕,作为特色活动之一的“创新应用展”吸引了众多优秀的开发团队和应用作品。参展的应用各具特色,范围涵盖社交、工作、娱乐、生活服务等多个方面,这也体现了移动应用开发所具备的强大潜力,同时MDCC大会这个平台也为广大开发者提供了良好的展示机会,让越来越多的高质量应用被发现,被挖掘。
创新应用展(App Lounge)是专门为创新应用团队打造的舞台。通过对参展应用的产品创新性、设计、性能,参会者对现场演示的反馈以及专家推荐和用户评论等方面,我们最后从30个入围作品中评选出了5个年度最佳应用和2个人气应用。
以下是本次MDCC大会创新应用展 Top 5年度最佳应用获奖名单及获奖理由:
- 应用名称:课程格子
- 作品类型:社交
- 开发团队:计划FM团队
获奖理由:表面以大学课程表为载体,实际注重移动社交。从头脑风暴,到产品设计,到北大封闭测试,到用户冲到20万,都在极短的时间内完成。创新的产品设计、流畅的用户体验、稳定的性能,都透着一股出众的气质,使其成为众多社交产品中的“高富帅”。
课程格子
- 应用名称:虫洞语音助手
- 作品类型:工具
- 开发团队:光年团队
获奖理由:没有显贵的出身,却踊跃成为国内Android平台的语音助手工具中的一位大明星!语音识别准确度让人满意,强大的功能依然贯彻有趣实用的风格。引入了开放API,根据用户提供的关键字进行网络搜索,反馈出更多合适的答案。
虫洞语音助手
- 应用名称:鲸鱼岛的冬天
- 作品类型:儿童教育
- 开发团队:“斑马骑士”团队
获奖理由:“跨界和混搭”的团队、执着的梦想,造就了这款精致美丽、极富动感的儿童交互游戏,向我们展示了如何通过声控、手势控制和Stage 3D图形渲染等技术,将一个童话世界变得栩栩如生的实例。
鲸鱼岛的冬天
- 应用名称:被错过的天堂
- 作品类型:解密类游戏
- 开发团队:3000GAME工作室
获奖理由:界面画风新奇,情节设计诡异,程序设计出色。坚持极简设计,创新地在传统解密游戏中加入了多重结局以及多模式转换玩法,巧妙地在众多大团队、大创作、大手笔的游戏作品中脱颖而出。
被错过的天堂
- 应用名称:出门儿
- 作品类型:生活服务
- 开发团队:移花互动“酒店达人”团队
获奖理由:当其它一些应用不断将原有功能模块进行分拆做减法之时,“出门儿”则是走了相反的整合加法之路,将酒店、机票、电影票、美食、火车票与租车服务碎片化体验进行无缝整合,推出一站式移动出行。
出门儿
以下是本次MDCC大会创新应用展 人气应用获奖名单及获奖理由:
- 应用名称:布丁电影票
- 作品类型:生活服务
- 开发团队:布丁团队
获奖理由:作为创新工场孵化的首个O2O项目,布丁的应用始终都能吸引大众的眼球。新版本支持包括iPhone 5在内的各种机型,出色的交互设计使其卓尔不群。
布丁电影票
- 应用名称:RockPlayer
- 作品类型:工具
- 开发团队:改变科技团队
获奖理由:凭借专为移动设备优化的播放核心以及高度优化的FFMpeg解码器,RockPlayer已经成为了Android平台上性能最高支持格式最广泛的视频播放软件。刚刚登录App Store的RockPlayer表现不凡。
RockPlayer
创新应用展(App Lounge)依托于MDCC移动开发者大会,拥有良好的用户、开发者、产品展示、推广等多方面资源。本次活动取得了巨大成功,希望移动开发领域能够涌现出更多优秀的产品,为用户提供更优质的服务,为移动互联网添砖加瓦。