一直在开发一个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 文件?
是Objective-C等同于Java接口的协议。
不要使用IMessage,匈牙利符号在C#中使用,但不在Objective-C或Java中使用。
如果你声明某些东西需要被其他类使用,你可以在.h中声明它们。但是,如果您特别需要该类,请在 .m 中声明它
如果你想要另一个的var和数据.它应该在 .h 中声明
您需要将声明保留在.h文件(接口)和.m(实现)中的实现。仅当单个文件中的类是嵌套类时,才能对类使用接口和实现。您可以在此处找到有关序列化(存档)的优秀教程:http://nshipster.com/nscoding/