Objective c 如何返回结构?
我有这段代码不起作用,因为用户总是空的。这很奇怪,因为如果我在返回数据之前调试,它是可以的,但是在返回数据之后总是空的。我怎样才能解决这个问题?我真的很感激任何意见、建议或提示 注:xcode 5 iOS 7 数据类型的定义Objective c 如何返回结构?,objective-c,c,struct,Objective C,C,Struct,我有这段代码不起作用,因为用户总是空的。这很奇怪,因为如果我在返回数据之前调试,它是可以的,但是在返回数据之后总是空的。我怎样才能解决这个问题?我真的很感激任何意见、建议或提示 注:xcode 5 iOS 7 数据类型的定义 typedef struct { char *locale; } W_user; .m测试文件 W_user *user; -(void)test{ // user is always null user = W_generateUserDef
typedef struct {
char *locale;
} W_user;
.m测试文件
W_user *user;
-(void)test{
// user is always null
user = W_generateUserDefault();
}
方法
W_user *W_new() {
W_user *user = malloc(sizeof(W_user));
memset(user, 0x00, sizeof(W_user));
return user;
}
W_user *W_generateUserDefault() {
W_user *user = W_new();
user->locale = "es";
// but here user contains data
return user;
}
尝试将
测试更改为:
-(void)test{
// user is always null
W_user *user = W_generateUserDefault();
}
然而,这很奇怪,因为局部变量隐藏全局变量,反之亦然
另外,您确定没有在release
模式下调试它吗?请尝试NSLog
用户值,以确保它是nil
typedef拼写错误。似乎所有内容都是正确的。您是否在最后尝试将用户登录到test()中。您如何知道user
us null?您是如何测试这一点的?如果您的代码从未使用全局用户
,它的分配是否会被优化?是否调用过test()
?顺便说一句:这些代码都不会返回结构。代码所做的只是返回一个指向结构的指针。这就是正在编译和运行的代码吗?这里看起来是正确的,但我可以想象一些代码错误,例如memset(&user,0x00,sizeof(W_user))代码>这将导致此问题。(我这样问是因为如果typedef
最初拼写错误,那么这可能不是正在运行的实际复制和粘贴的代码。)