草庐IT

Binding_New_Objective-C_Types

全部标签

c++ - Objective C "@property (nonatomic, retain)"的 C++ 等价物是什么?

我想知道如何在C++中正确创建属性。在ObjectiveC中,我使用“@property”(通常与(nonatomic,retain)属性一起使用)。C++中正确的方法是什么?谢谢!! 最佳答案 正如Seva所说,C++中没有那种意义上的属性。你可以做什么:用boost::share_ptr写一个类成员变量,并可选择为该成员编写getter和setter。但这甚至不是真正必要的,尽管可能被认为是良好的行为。typedefboost::shared_ptrStringPtrT;classA{public:voidsetStringPr

c++ - 如何从 operator new 或 malloc 为 mremap 获取页对齐内存

有没有办法分配一block内存,使其起始地址与给定的页面大小对齐?请注意,我不想在分配block后计算对齐地址。原因是在某些时候我将不得不在block上调用mremap():mremap要求旧地址参数是页面对齐的。 最佳答案 mremap只能安全地用于由mmap分配的内存区域,这些内存区域本质上是页面对齐的。在其他任何事情上使用它都是危险的(正式的,未定义的行为)并且可能看起来有效但可能会以您不会立即看到的方式严重破坏事物。 关于c++-如何从operatornew或malloc为mre

c++ - 如何在 C++ 类中接收来自 Objective-C 的 NSNotifications?

我有一个Objective-C++类,它将自己添加为CocoaNSView上事件的观察者。我希望能够将NSNotifications发送到C++类的方法而不是Objective-C方法或block。我该怎么做?我的情况是这样的:A-Objective-C++类B-NSViewB被A封装了,我想通知B的事件之一。但是,处理该事件的方法必须引用包含B的A实例。 最佳答案 在Objective-C中创建一个死的简单包装类,它指向您的C++实例并通过调用C++方法处理通知。 关于c++-如何在C

c++ - 在 Objective-C 代码中使用带有 C++ 实例变量的 Objective-C++ 类

我正在编写一个Objective-C++类接口(interface),它必须可以从Objective-C和Objective-C++中使用。问题是,因为它必须可以从Objective-C使用,所以我不能简单地使用C++类型。我想用指针来做,我想到了这个:@interfaceSXDiff:NSObject{@private#ifdef__cplusplusdtl::Diff>*_diff;#elsevoid*_diff;#endif}...@end这样做会不会出现什么问题?有更好的方法吗?请注意,使用指针只是为了让Objective-C和Objective-C++中的ivar大小相同。i

c++ - 如果重载了一个new但是没有加载对应的delete会怎样?

任何人都可以解释如果在C++中重载了new但未加载相应的delete会发生什么情况? 最佳答案 这只是对象构造抛出异常时的问题,在C++115.3.4/18中有描述:Ifnounambiguousmatchingdeallocationfunctioncanbefound,propagatingtheexceptiondoesnotcausetheobject’smemorytobefreed.[Note:Thisisappropriatewhenthecalledallocationfunctiondoesnotallocatem

c++ - 在 C++ 中使用 Objective-C 类

我是Objective-C的新手,我正在为我们的项目构建一个iCloud实用程序库。我在Objective-C中创建了一个iCloud实用程序类。我注意到有很多关于在Objective-C中使用C++类的问题,但反之则很少。问题是,我们的项目(以及构建我们项目的引擎)完全是用C++编写的,因此,我编写的objective-cicloud类需要可以从我正在编写的C++接口(interface)访问。这是一个例子:iCloudUtils.h#import@interfaceiCloudUtil:NSObject@property(nonatomic,assign,getter=isAvai

c++ - 在 C++ 中用 new/delete 替换 malloc/free

我只是想确定一下。这是我的代码int*Image=(int*)malloc(sizeof(int)*m_Width/2*m_Height);free(Image);如果我想使用new而不是malloc和free而不是delete。这是我写的int*Image=newint[m_Width/2*m_Height];delete[]Image;对吗? 最佳答案 从技术上讲,这是正确的。然而,这是我们正在谈论的C++,动态分配数组的C++方法是使用std:vector代替:std::vectorImage(m_Width/2*m_Heig

c++ - 没有 new 的动态数组 (C++)

我是C++的新手,这是一个非常基本的问题。在C++中,只有两种创建动态数组的方法(读过一本书,如果我错了请纠正我)使用new运算符或malloc()函数,取自C。当声明一个数组intarray[size]时,方括号[]必须有一个const.但是在下面的代码中,size是一个unsignedint变量。#includeintmain(){usingnamespacestd;unsignedintsize;cout>size;intarray[size];//DynamicallyAllocatingMemorycout>array[i];}//DisplayingElementscout

c++ - 当您调用 new[] 为 N 个整数分配一个数组时,是否保证该数组将按顺序分配到物理内存中?

据我了解,每个计算机程序总是使用虚拟内存,而处理物理内存的方式取决于操作系统。我正在参加一个算法工程类(class),在某个时候有人提到,如果缓存内存是无限的并且一个缓存行的大小为B那么预计会发生的缓存未命中数如果您只想扫描N元素的数组,则为N/B我可以看出这在理论上是如何工作的,因为我们假设N元素在物理内存中一个接一个地放置。但是,这实际上是真的吗?如果虚拟内存是顺序分配的,那是否也意味着物理内存也将是顺序分配的?在我看来,在实践中,假设N不大于缓存大小,如果N元素未在物理内存(RAM)中按顺序分配。也许我误解了虚拟内存和物理内存之间的区别,我不确定。 最

c++ - 是否有像 C# 中那样的 C++ new 声明

我想知道是否有像C#中那样的new声明用于C++C#允许您这样做,它只是稍微整理了代码:FuncCall(newFoo(){Bar="sausage",Boo=4});只是我觉得这在C++中有点草率:unique_ptrfoo(newFoo());foo.Bar="sausage";foo.Boo=4;FuncCall(move(foo));Foo可能看起来像这样:classFoo{public:Foo();stringBar;intBoo;}为什么我不将所有内容都放入构造参数中?因为当你必须初始化这么多的时候,这很愚蠢:Foo(intwidth,intheight,stringtit