长夜漫漫,无心睡眠,定一个小目标吧,写一下自己对android、iOS开发区别的见解。
Java、OC大不同
本人先会的Java,所以比较都会以Java、Android入手开始比较。
1. 类的定义
OC的类定义比较特殊分为两个部分,接口部分和实现部分
比如一个MyClass类,有岁数和名字两个成员变量,一个实例方法jump和一个类方法run
java是这么定义的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class Person { public int age; public String name; private long tmp; public Person(int age,String name){ this.age = age; this.name = name; } public void jump(String str){ } public static void run(){ } }
|
OC的定义需要两个部分MyaClass.h和MyClass.m
1 2 3 4 5 6 7 8 9 10
| # import <Foundation/Foundation.h>
@interface MyClass : NSObejct { int _age; NString* _name; } - (void)jump:(NSString*)str; + (void)run; @end
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # import "MyClass.h"
@implementation MyClass { long _tmp; // 只能在实现部分使用,相当于private的变量 } - (void)jump:(NSString *)str { // } + (void)run { // } @end
|
2.新建对象和使用
如果java中的对象是这样的
1 2 3 4 5
| public class MyClass{ public void run(){ System.out.println("I'm running!!!"); } }
|
它的新建就是MyClass a = new MyClass(),Java帮助它实现了默认的一个构造函数。使用run方法时则是a.run()。
OC则是这样的
1 2 3 4 5 6 7 8 9 10 11
| // MyClass.h ... @interface MyClass : NSObject - (void)run; @end // MyClass.m @implementation MyClass - (void)run { NSLog(@"I'm running!!!"); }
|
使用时MyClass a = [[MyClass alloc] init],OC同样帮助它实现了一个默认的构造函数。使用run方法时则是[a run]。