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

搞Android用java偏偏要去看iOS的oc代码

2016-10-31 17:41 561 查看
最近需要把iOS实现好的功能用android做出来,所以就是copy oc paste java了。理解的肯定不对,跟我一起入坑吧。

这篇文章讲的很清楚,为了更快速的复习,总结如下:

ios的文件分为:.h和.m

.h就是头文件,.m是实现类,我简单的理解是.h中是父类用来定义一堆东西,.m是实现类,做具体的实现。

.h中的方法和变量都是public

.m中的是private

声明变量和方法

@property (nonatomic, copy) NSString *host;// String host //@property 的意思是自带geter/setter

NSMutableArray *accountList;//可变数组 类似于集合

+ (instancetype)shareInstance{ //一般用作单例 +标识static 如果是 - 代表一般方法
xxxobject = [[xxxobject alloc] init];//new object(); 后边的init方法类似构造方法做初始化
return xxxobject }

- (instancetype)init
{
.......初始化......
}

-(void) HelloWorld:(BOOL)ishelloworld{
//干点啥
}
就是
public void helloWorld(bool ishelloworld) {
//干点啥
}

ClassA:ParentA  // ClassA extends ParentA
ClassA:ParentA<Protocol>   //ClassA extends ParentA implements interface
ClassA <Protocol>  //ClassA implements interface

//调用方法 []代表调用方法 如
[self.object method:self.id account:account];
就是
this.object.method(this.id,account);// : 前边的account是参数名 无意义

if(object){} //if(object!=null){}

[self.xxxattr method:self.xxxID Succ:^(NSString *aaaID) {

}]; //第二个参数相当于java中的监听 C语言也有这个东西


接下来是回调了

instance.callbackSet(new CallBack(){
@Override
public void onLoginSuccess(int uid, int fd) {
super.onLoginSuccess(uid, fd);
manager.onLoginSuccess(uid);
}
});
inst类中有回调onLoginSuccess,实现方法就是右边的代码块
inst.onLoginSuccess = ^(uint32_t uid, int fd){//^代表是block 就是代码块的意思
if ([manager respondsToSelector:@selector(onLoginSuccess:)]) {
[manager onLoginSuccess:uid];
}

//还有这种把方法当参数传递的,对应java中的监听。在一个类中调用,另一个类实现,感觉比java好用呀

[self.object channelJoin:self.ID Succ:^(NSString *ID) {}] //succ在另外一个类实现,id是参数
//另外一个类是这样:
- (void)method:(NSString *)ID Succ:(onChannelDidJoined)succ//参数
{
[inst channelJoin:channelID];
inst.onChannelJoined = ^(NSString* name){
succ(name);//调用 在另外一个类实现
};
}


有时候会见到id 类型 这是一个泛型 可以理解为object\

_xxx 这里的 下划线 可以理解为this.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: