我是iOS的初学者,我遇到了一个我无法单独解决的问题。
Cnx.h:
NSString* _ip;
int * _port;
@interface Cnx : NSObject
-(int*) getPort;
-(void) setPort: (int*) pPort;
Network.h:
Cnx* _lan;
Cnx* _wan
@interface Network: NSObject
-(Cnx*) getLan;
-(Cnx*) getWan;
-(void) setLan: (Cnx*) pCnx;
-(void setWan: (Cnx*) pCnx;
Manager.h:
Network * _network;
@interface Manager: NSObject <NSXMLParserDelegate>
-(Network*)getXml; // Xml parsing fill _network return correct object (not nil)
在我看来.m:
-(id) init {
self = [super init];
if(self) {
Network *_net = [[[Manager alloc] init] getXml];
}
return self;
}
-(void) anotherMethod {
// Want to access to _net value, but object is nil..
}
我的Bp对象正确填充,但是当我不想使用它时,他变成了#n;&#34; nil&#34;。我知道这是一个指针的故事,但我没有找到解决方案...... 我希望我的例子是明确的。
感谢您的帮助!
答案 0 :(得分:1)
您要在_net
方法中声明init
值,而不是在班级中全局 。
所以你应该在property
:
@interface
这样的内容
@property (nonatomic, strong) Network *net;
和代码:
-(id) init {
self = [super init];
if(self) {
_net = [[[Manager alloc] init] getXml];
}
return self;
}
你的代码也完全错了,你应该这样做:
@interface Cnx : NSObject {
NSString *ip;
}
@property (nonatomic) int port;
@proeprty
因为我发现您使用的是 getter 和 setter 方法,而@property
是自动 {{ 1}}所以你有一个默认的 setter 和 getter 方法。
@synthesized
变量是普通实例。
很明显,你不清楚 ObjC 是如何工作的(也许也是OOP?)。所以我鼓励你仔细阅读一下。