最近,当我使用类似的东西时,我一直在控制台中看到这条消息
google.script.run.AppScriptFunctionThatIWrote();
Run Code Online (Sandbox Code Playgroud)
无论它做什么或返回什么,它总是打印
"监狱已经初始化 - 返回"
到浏览器控制台.起初,我认为这是一个错误,但它甚至打印在有效的代码上.它从昨天开始才出现,这让我感到震惊.在这一点上,我大多只是好奇.有谁知道它是什么?
那么,apple的[NSHashTable weakObjectsHashTable]状态文档:
返回一个新的哈希表,用于存储对其内容的弱引用.
所以,当我运行以下代码时......
NSHashTable *hashTable = [NSHashTable weakObjectsHashTable];
ABC *object = [[ABC alloc] init];
[hashTable addObject:object];
NSLog(@"%@", [hashTable anyObject]);
object = nil;
NSLog(@"%@", [hashTable anyObject]);
Run Code Online (Sandbox Code Playgroud)
输出是:
2017-09-18 12:57:02.801 Test2[6912:640614] <ABC: 0x608000014eb0>
2017-09-18 12:57:02.801 Test2[6912:640614] <ABC: 0x608000014eb0>
2017-09-18 12:57:02.803 Test2[6912:640614] dealloc // (dealloc of ABC)
Run Code Online (Sandbox Code Playgroud)
看起来调用NSLog(@"%@", [hashTable anyObject]);是保留对象.
如果我打电话,
NSHashTable *hashTable = [NSHashTable weakObjectsHashTable];
ABC *object = [[ABC alloc] init];
[hashTable addObject:object];
//NSLog(@"%@", [hashTable anyObject]);
object = nil;
NSLog(@"%@", [hashTable anyObject]);
Run Code Online (Sandbox Code Playgroud)
产量如预期:
2017-09-18 13:00:23.949 Test2[6936:645459] dealloc …Run Code Online (Sandbox Code Playgroud) 当我因某种原因编译这个小程序时,"printf("done")"行没有执行,我无法弄清楚原因.在我的print语句之前最初有一个if块,而且还没有执行.我尝试通过gdb运行它并逐步完成它.它找到了该行,但它没有执行它.我正在尝试使用gcc 4.7.2编译它,我使用gedit 3.4.2作为我的文本编辑器.
这是我用来编译它的命令.
gcc teststuff.c -o test
Run Code Online (Sandbox Code Playgroud)
这是代码
#include <stdio.h>
void testmethod()
{
int sign = 1;
printf("hello\n");
printf("%d\n",sign);
printf("done");
}
main(void)
{
testmethod();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法,为什么它跳过代码的这一部分?谢谢!