首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iphone memset问题

iphone memset问题
EN

Stack Overflow用户
提问于 2011-10-10 17:23:04
回答 1查看 168关注 0票数 0

我在我的头文件中定义了一个结构:

代码语言:javascript
复制
#import <UIKit/UIKit.h>    
typedef struct ORIGINAL_QUOTA_DATA_tag
{
    byte    exch;          
    byte    complex_stat;                   
    char    contract[8];    
    byte    status;         
    byte    type;        
}ORIGINAL_QUOTA_DATA;
@interface NetTestAppDelegate : NSObject <UIApplicationDelegate> {
    CFSocketRef _socket;
    CFDataRef address;
    ORIGINAL_QUOTA_DATA oQuota;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;

在.m文件中:

代码语言:javascript
复制
    static void TCPServerConnectCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDataRef address, const void *data, void *info){
memset(&oQuota, 0, sizeof(oQuota));
}

但它得到了worning:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-10 18:04:59

您正在从C函数引用oQuota (它也是静态的,但这不是问题所在)。您的oQuota变量只在您的NetTestAppDelegate的Objective-C方法实现的“作用域”内

代码语言:javascript
复制
void myCFunction()
{
    // oQuota cannot be referenced here.
}

@implementation NetTestAppDelegate
- (void)myObjectiveCMethod
{
   // oQuota is in scope, can reference it.
}
@end

但是你能做的就是把对象传递给你的回调函数:

代码语言:javascript
复制
static void TCPServerConnectCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDataRef address, const void *data, void *info){
    memset(
      &((NetTestAppDelegate *)info)->oQuota,
      0,
      sizeof(((NetTestAppDelegate *)info)->oQuota)
    );
    // Not sure whether the sizeof works, try it.
}

在你的CFSocketContext中,你需要设置:

代码语言:javascript
复制
myCFSocketContext.info = self;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7710762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档