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