我无法理解为什么以下代码不构造和破坏我创建的两个对象,我期望的方式:
#include <iostream>
class MyClass {
int myVar;
public:
MyClass(int x) {
myVar = x;
std::cout << "constructing " << myVar << ", " << (long)this << std::endl;
}
~MyClass() {
std::cout << "destructing " << myVar << ", " << (long)this << std::endl;
}
};
int main(int argc, const char * argv[])
{
MyClass a = MyClass(1);
a = MyClass(2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为在main中我首先创建一个值为1的对象,然后创建一个值为2的新对象.每个对象都被构造和销毁,所以我希望看到以下输出:
constructing 1, 3456
constructing 2, 6789
destructing 1, 3456
destructing 2, 6789
Run Code Online (Sandbox Code Playgroud)
但是,我明白了:
constructing 1, …
Run Code Online (Sandbox Code Playgroud) 我想检测文本中的单词,即我需要知道给定文本中的哪些字符是字母,即它们可以是(口语)单词的一部分,另一方面,哪些字符是标点符号等。
\n\n例如,在上面的句子中,“我”、“想要”和“i”和“e”是这方面的单词,而空格“。” 和逗号则不是。
\n\n这样做的困难在于我希望能够读取任何类型的基于 Unicode 的脚本。例如,德语单词“sch\xc3\xb6n”是一个单词。但希腊语、阿拉伯语或日语又如何呢?
\n\n因此,我需要一个表格或列表,指定可以形成单词的所有字符范围。或者,我还想知道哪些字符是可以形成数字的数字(假设其他脚本具有与阿拉伯数字类似的编号方案)。
\n\n我需要这个用于 Mac OS X、Windows 和 Linux。我将编写一个 C 应用程序,因此它需要是一个操作系统库或一个完整的代码/数据解决方案,我可以将其转换为 C。
\n\n我知道Mac OS(Cocoa)提供了用于此目的的功能,但我不确定Win和Linux是否有类似的解决方案(可能是基于gtk?)。
\n\n或者,如果我有完整的表格,我可以编写自己的代码。
\n\n我找到了 unicode 图表(http://unicode.org/charts/index.html#scripts),但这并不是我可以在编程中使用的一种方便的形式。
\n\n那么,有人可以告诉我 Windows 和 Linux 是否有用于此目的的函数,或者我在哪里可以找到 unicode 中单词字符的完整表/列表?
\n我需要你的帮助.我在NSInvocation'getReturnValue:'方法中遇到了一些问题.我想以编程方式创建UIButton,甚至更多,我想使用NSInvocation动态创建它,并通过NSArray传递值(这就是我包装UIButtonTypeRoundedRect的原因).
清单.
NSLog(@"Button 4 pushed\n");//this code executed when button pushed
Class cls = NSClassFromString(@"UIButton");//if exists {define class},else cls=nil
SEL msel = @selector(buttonWithType:);
//id pushButton5 = [cls performSelector:msel withObject:UIButtonTypeRoundedRect];//this code works correctly,but I want to do this by NSInvocation
//---------------------------
NSMethodSignature *msignatureTMP;
NSInvocation *anInvocationTMP;
msignatureTMP = [cls methodSignatureForSelector:msel];
anInvocationTMP = [NSInvocation invocationWithMethodSignature:msignatureTMP];
[anInvocationTMP setTarget:cls];
[anInvocationTMP setSelector:msel];
UIButtonType uibt_ = UIButtonTypeRoundedRect;
NSNumber *uibt = [NSNumber numberWithUnsignedInt:uibt_];
NSArray *paramsTMP;
paramsTMP= [NSArray arrayWithObjects:uibt,nil];
id currentValTMP = [paramsTMP objectAtIndex:0];//getParam from NSArray
NSInteger i=2;
void* bufferTMP; …
Run Code Online (Sandbox Code Playgroud) 假设有一个带有整数列的 sqlite 数据库。
现在,整数字段往往也包含 NULL 值(=未设置)。
在对该字段进行查询时,我想将 NULL 值解释为零 (0)。
有没有办法告诉 sqlite 在这种情况下我喜欢像 0 一样处理 NULL,特别是当我使用 SELECT 语句进行比较时?
由于我在类似 C 的代码中动态构造查询,因此我希望能够编写如下内容:
query = "SELECT * FROM tbl WHERE intField=" + IntToStr(anIntValue)
Run Code Online (Sandbox Code Playgroud)
目前,我使用以下代码解决了这个问题,我想避免这样做:
if (anIntValue == 0) {
query = "SELECT * FROM tbl WHERE intField IS NULL OR intField=0"
} else {
query = "SELECT * FROM tbl WHERE intField=" + IntToStr(anIntValue)
}
Run Code Online (Sandbox Code Playgroud)
也许我可以在查询中使用一个运算符将 NULL 转换为我指定的其他值?
当然,另一种方法是确保该字段中永远不会出现 NULL 值,但人们可能希望能够知道该值何时尚未设置,所以我希望能够保留数据库中的 NULL 值。
我试图保护从字符串到Float到Int的转换:
guard let v = Int (Float("x")) else {
return -1
}
Run Code Online (Sandbox Code Playgroud)
swift 3编译器抱怨:
可选类型'Float?'的值 没有打开; 你的意思是用'!' 要么 '?'?
添加"?" 但是没有帮助.并且"!" 这里会错的,不是吗?
是否有可能解决这个问题,而不必使用两行或两个保护声明?
我有一种特殊的磁盘映像格式(已压缩并带有坏块等额外信息),并希望将其作为/dev/rdisk
macOS 中的块设备使用(例如在 下)。
我正在寻找有关如何编写只读块级用户空间驱动程序的指针。
我相信我需要使用 IOKit 来完成此操作,但该领域的文档非常稀疏,并且据我所知没有提供任何示例代码。
我看过 Amit Singh 的Mac OS Internals,但这仅涉及过滤通过添加的驱动程序路由的现有块。但我需要从单独的文件中读取数据,即我需要使用文件系统,如果可能的话,我也想在用户空间应用程序中执行此操作,因为制作 kext 既难以调试,而且现在也已被弃用。
理想情况下,这应该适用于当前的 macOS 版本,包括 10.15,但我也对仅适用于较旧的 macOS 版本(从 10.6 开始)的解决方案感到满意。
也许我仍然误解了这里的一些事情。我的印象是,甚至在 10.15 之前就可以编写用户空间 IOKit 驱动程序。但对于块存储设备来说这可能是不可能的吗?欢迎任何澄清。我感觉很失落。
2020 年 6 月 22 日更新
我还在 OSXFUSE 支持论坛上提出了这个问题,并得到了否定的答复。
随着即将推出的 Apple Silicon 硬件,一些应用程序可能想要确定 CPU 是 Intel 还是 Apple 的。
哪些 API 和系统调用可以提供该信息?
正如@MarkSetcell指出的,sysctl -a
可以提供一些信息。对于 DTK (macOS 11b3),它返回:
machdep.cpu.brand_string: Apple processor
Run Code Online (Sandbox Code Playgroud)
OTOH,苹果的System Profiler.app
节目:
Processor Name: Apple A12Z Bionic
Run Code Online (Sandbox Code Playgroud)
我喜欢有类似的结果,即“Apple A12Z Bionic”而不是“Apple 处理器”。
在系统卷上快速搜索“Apple A12Z Bionic”显示它出现在“dyld_shared_cache_arm64e”中的某个位置,但不在内部System Profiler.app
,这表明该字符串是由框架函数传递的,而不是在 Profiler 应用程序中硬编码的。因此,我希望找到提供这个更具描述性名称的系统调用。
很难解释我在主题行中需要什么.如果您有更好的想法,请随时编辑它.
问题如下:
iOS应用程序一次只能处理一个文档.每次关闭文档并打开一个新文档,即使它是相同的文档,内存使用量也会不断增加,并且总是以相同的数量增加.
所以有泄漏.代码不会释放(释放)某些东西.也许它是一个数组,它添加对文档项的引用,并且永远不会被清除,尽管它应该.
当然,泄漏工具在这里没有帮助,因为它都是"正确的"(它只能找到没有所有者的分配).
我如何使用Instruments(或dtrace)现在找到这个bugger?如果我可以简单地在仪器中识别其中一个未添加的对象,那将会有所帮助,其余的将很容易.
到目前为止,我一直在使用Allocations工具,将检查范围设置为旧文档关闭和新文档打开时的时间.尽管如此,这显示了数以千计的对象,其中只有一个是从前一个文档遗留下来的对象,尽管它不应该仍然存在.我需要识别的那个对象.
我想我需要的是Allocations工具中的一个功能,它减去刚刚添加的所有分配,并且还减去启动后存在的所有分配 - 剩下的是由新文档创建但从那时起未发布的项目.有没有办法获取收集的对象集合,将它们分组并设置这样的操作?可能不是.
每次打开文档时都会创建大约20000个对象,并且涉及大约50个源文件,通过查看源代码或手动检查所有对象是不可行的.
哦,静态分析仪也无济于事.
我的软件使用内置 API (PDFKit) 生成 PDF 文件。
我现在需要以编程方式从中创建一个受密码保护(通过加密)的 PDF 文件。PDFKit 似乎不支持。
我曾希望我可以使用 AppleScript 告诉 Preview 打开 PDF,然后用密码保存它,但似乎 Preview 的 AppleScript 字典没有提供选项。
我有哪些选择?
macos ×3
xcode ×2
c++ ×1
disk ×1
encryption ×1
instruments ×1
iokit ×1
ios ×1
iphone ×1
memory-leaks ×1
nsinvocation ×1
objective-c ×1
optional ×1
pdf ×1
pointers ×1
shell ×1
sql ×1
sqlite ×1
swift ×1
text ×1
unicode ×1