身为一个安卓程序员是很苦逼的,各种手机厂商自制系统,导致各种组件bug,屏幕适配,不挣钱等等。楼主现在有机会接触一下ios,把从一些android转ios期间遇到的一些困惑整理下来。
首先初识ios要不要学object-c,我认为还是很有必要的,我们要学习的是ios系统,所以不要局限于语言,要先理解ios的思想,而且现在oc的文章很多,足够我们学好ios。
所以这里总结的也主要是oc和java不同的地方
下面创建一个项目
建立一个类名字叫Person。
Person.h 中代码如下:
@interface Person : NSObject<NSObject>{
@private NSString *health;
@protected NSString *power;
@public NSString *height;
}
@property NSString *name;
@property NSInteger *age;
-(void)say:(NSString *)content;
-(void)sayHello;
+(void)addPerson;
@end
Person.m如下:
#import "Person.h"
@interface Person()
@property NSString *sex;
@end
@implementation Person
-(void)say:(NSString *)content{
height=@"高度";
_name=@"名字";
self.name=@"名字";
[self sayHello];
}
-(void)sayHello{
NSLog(@"say hello");
}
+(void)addPerson
{
NSLog(@"person has add");
}
@end
@interface 意思是声明一个类,和java中的接口不是一个意思。类名为Person, :号是继承的意思,这里继承自NSObject, <>内是实现的接口,如果有多个,中间用逗号分隔开。
后面紧跟着的{} 里面定义的是类内部使用的局部变量,外部不能访问,@private的相当于java中的private仅本类可以访问,@protected和@public相当于java中的protect,子类可以访问。
@property 定义的是类变量,相当于java中的public,外部通过实例可以访问
-(void)say:(NSString *)content;
-号代表是一个方法publiuc方法
+(void)addPerson;
+号代表是一个static方法
转为java代码为:
public class Person extends Object implements Object{
private String health;
private String sex;
protected String power;
protected String height;
public String name;
public int age;
public void say(String content){
};
public void sayHello(){
}
public static void addPerson(){
}
}
oc中对变量的调用也有不同,类的私有变量可以直接调用,公有变量需要前面加上下划线或者通过self.的方式调用,而实例方法通过 [类实例 方法] 调用;
#import "Person.h"
@implementation Person
-(void)say:(NSString *)content{
height=@"高度";
_name=@"名字";
self.name=@"名字";
[self sayHello];
}
-(void)sayHello{
NSLog(@"say hello");
}
+(void)addPerson
{
NSLog(@"person has add");
}
@end
欢迎大家补充,本文会持续更新,方便java开发者快速熟悉oc开发