Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何返回结构?_Objective C_C_Struct - Fatal编程技术网

Objective c 如何返回结构?

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

我有这段代码不起作用,因为用户总是空的。这很奇怪,因为如果我在返回数据之前调试,它是可以的,但是在返回数据之后总是空的。我怎样才能解决这个问题?我真的很感激任何意见、建议或提示

注:xcode 5 iOS 7

数据类型的定义

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
最初拼写错误,那么这可能不是正在运行的实际复制和粘贴的代码。)