微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将类作为参数传递给 NSThread

如何解决将类作为参数传递给 NSThread

如何使用 NSThread 将类作为参数传递给线程。在 Windows 中,我正在做类似的事情:

try
{
    var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_QuickFixEngineering");
    using (ManagementObjectCollection managementObjectCollection = searcher.Get())
    {
        ManagementObject managementObject = managementObjectCollection.OfType<ManagementObject>().First();
        string stringDate = managementObject["InstalledOn"].ToString();
        string format = "M/d/yyyy";
        CultureInfo provider = CultureInfo.InvariantCulture;
        DateTimeOffset result = new DateTimeOffset();
        result = DateTimeOffset.ParseExact(stringDate,format,provider,DateTimeStyles.AssumeUniversal);
        systemLastwindowsUpdate = result.ToString("yyyy-MM-dd");
    }
}
catch (Exception)
{
    MessageBox.Show("Problem in Windows Update");
}

对于 Mac,我还没有找到任何此类示例。请帮帮我

解决方法

我找到了解决方案,它可以像 windows

class CLS_CPP {
public:
  void Func();
  void Check();
  int var_check;
};

@interface CLS_OSX : NSObject {
@public
  void *obj;
}
-(void)osx_thread;
@end
@implementation CLS_OSX
-(void)osx_thread {  
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    CLS_CPP *pThis = reinterpret_cast<CLS_CPP*>(obj);
  pThis->Check();
  NSLog(@"Check var %d",pThis->var_check);
  [NSThread exit];
  [pool drain];
}
@end

void CLS_CPP::Func() {
  var_check=77;
  CLS_OSX *trgt=[[CLS_OSX alloc] init]; 
  trgt->obj=(void*)this;
  [NSThread detachNewThreadSelector:@selector(osx_thread) toTarget:trgt withObject:trgt];
}
void CLS_CPP::Check() {
  NSLog(@"CLS_CPP::Check success");
}

int main(int argc,char ** argv) {
     
  CLS_CPP oAPP;
  oAPP.Func();  
    
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。