我试图抓住如何将界面从android转换为objective-c

时间:2013-09-12 09:46:31

标签: java android ios objective-c

所以我最近开始学习Objective-C并且在工作中我们一直在开发一个Android应用程序,我们稍后将在IOS上发布,所以我试图了解如何重新学习 - 将一些代码写入Objective-C让我们以此为例:

import java.io.Serializable;

/*
  * Serializable is needed for sending in Android intents.
  */
public interface IMessage extends Serializable {
enum MessageID {
    // Nothing to send or reply
    NONE,
    // Client polls server
    POLL,
    POLL_OK,
    // Client internal, indicates network problems
    NONETWORK,
    // Indicates programming errors
    INVALIDMESSAGE,
    INVALIDSTATE,
    UNKNOWNMESSAGE,
    // Application setup messages
    LOGIN,
    LOGIN_OK,
    LOGIN_ACCOUNT_DOES_NOT_EXIST,
    LOGOUT,
    LOGOUT_OK,
    REGISTER,
    REGISTER_OK,
    REGISTER_NICKNAME_ALREADY_EXISTS,
    UPDATEACCOUNT,
    UPDATEACCOUNT_OK,
    UPDATEACCOUNT_NICKNAME_ALREADY_EXISTS,
    // Game setup messages
    QUERYGAMESTATUS,
    QUERYGAMESTATUS_IDLE,
    QUERYGAMESTATUS_PENDING,
    QUERYGAMESTATUS_PLAYING,
    REQUESTGAME,
    REQUESTGAME_OK,
    REQUESTGAME_ALREADY_IN_GAME,
    REQUESTGAME_DUPLICATE_REQUEST,
    ENTERGAME,
    ENTERGAME_OK,
    ENTERGAME_ERROR,
    // Game playing messages
    // ...
};

MessageID     getID();
String        encodeAttributes();
void          decodeAttributes(String data);
}

所以我想知道你是否必须总是将.m文件与.h文件一起使用,因为我猜测在Obejctive-C中可能是这样的:

@interface IMessage : NSObject
typedef enum {

//all the same

} MessageID;

NSString *encodeAttributes();
-(void) decodeAttributes(NSString data);

或者我是否需要将其拆分为两个文件?因为我猜你必须同时拥有.m / .h文件?

3 个答案:

答案 0 :(得分:1)

Protocols是与Java接口等效的Objective-C。

不使用IMessage,匈牙利表示法在C#中使用,但不在Objective-C或Java中使用。

答案 1 :(得分:0)

如果你声明某些东西需要被其他类使用,你可以在.h中声明它们。但如果您需要专门为该类声明它.m

如果你想要var和另一个的数据。它应该在.h

中声明

答案 2 :(得分:0)

您需要保持声明是.h文件(接口)和.m(实现)中的实现。只有嵌套类才可以在单个文件中使用类的接口和实现。您可以在此处找到有关序列化(存档)的精彩教程:http://nshipster.com/nscoding/