0

所以我最近开始学习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 文件?

4

3 回答 3

1

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

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

于 2013-09-12T10:04:36.520 回答
0

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

于 2013-09-12T10:05:37.493 回答
0

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

如果您想要另一个 var 和数据。它应该在 .h 中声明

于 2013-09-12T09:58:59.247 回答