我无法理解这段代码.我真正需要的是将头指针修改为指向第一个元素.那么为什么不开始工作呢?更改*指针指向的头部更改的值,这应该有效,对吧?我已经通过引用/传递值读取了传递,但我发现很难理解.有人可以帮忙解释一下吗?感谢您的帮助.谢谢.
在C/C++中,指针滥用会更容易出错.考虑这个C/C++代码,用于在列表的前面插入一个元素:
bool insertInFront( IntElement *head, int data ){
IntElement *newElem = new IntElement;
if( !newElem ) return false;
newElem->data = data;
head = newElem; // Incorrect!
return true;
}
Run Code Online (Sandbox Code Playgroud)
前面的代码不正确,因为它只更新头指针的本地副本.正确的版本传入指向头指针的指针:
bool insertInFront( IntElement **head, int data ){
IntElement *newElem = new IntElement;
if( !newElem ) return false;
newElen->data = data;
*head = newElem; // Correctly updates head
return true;
}
Run Code Online (Sandbox Code Playgroud) 我有一个NSPopupButton,点击时会显示一个下拉菜单.此菜单由NSArray填充.现在,如果我点击下拉菜单中的一个项目,我可以选择它并确定选择的内容等.我想要做的是当用户点击NSpopup按钮,更新下拉菜单然后让用户选择其中一项.当我只选择下拉菜单(不点击其中任何一项)时,我无法找到如何调用IBAction方法.单击菜单中的项目会导致IBAction,但我只想单击NSPopupButton中的向下箭头来触发操作.有任何想法吗 ?谢谢.
我在我的主线程中使用NSProgressIndicator来更新进度,因为我运行了整个方法.现在,当我最终从另一个类文件调用一个对象,并等待该对象返回到我的主线程的值时,我注意到NSProgressIndicator将消失.我知道这是因为主线程被阻塞,直到我从另一个对象获得返回值.
所以我的问题是在主线程中更新UI而不阻塞它并让其他对象在后台运行并根据需要将值返回给主线程的推荐方法是什么.我知道如何使用块,但不允许块操作返回值.我需要的是帮助这个伪代码的东西:
-(IBAction) main {
//Update progress indicator UI to show progress
//perform an call to another object from another class.
// wait till i get its return value.
//Update progress indicator UI to show progress
// Use this return value to do something.
//Update progress indicator UI to show progress
}
Run Code Online (Sandbox Code Playgroud)
当调用另一个对象时,我注意到确定的NSProgressIndicator我已经完全消失,因为主线程被阻塞了.谢谢.