根据Cocoa Programming for Mac OS X,3rd Edition,第245页(第17章),您通常会在Interface Builder中创建视图.但是,可以在代码中创建它们,la:
NSView *superview = [window contentView];
NSRect frame = NSMakeRect(10, 10, 200, 100);
NSButton *button = [[NSButton alloc] initWithFrame:frame];
[button setTitle:@"Click me!"];
[superview addSubview:button];
[button release];
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我如何将控件的出口连接到代码中的操作?(在.NET中,这是一件容易的事;添加一个委托......我希望它在Cocoa/Obj-C中同样容易.)
使用vim,我觉得cw改变整个单词非常方便.Vim将动作命令和动作动词分开,实现了非常强大的组合.我现在不得不DefaultHandler改为ContentHandler.我自然认为它是"改为下一个大写字母",但我找不到从一个大写字母移动到下一个字母的动作命令.
在这种情况下,我可以使用ctH,但有没有办法改变(或删除等)CamelCase单词的第一部分,无论接下来是哪个大写字母?
让我们面对现实,改变它后重新加载python代码的整个过程是一团糟.我想出了一段时间后,调用import <module>解释器的效果要好from <module> import <class/function>,因为那时我可以调用reload(module)以获取更新的代码.
但我现在有更复杂的问题.所以我有这个文件,module1.py,并在顶部说:
from module2 import <class1>, <function1>, etc.
Run Code Online (Sandbox Code Playgroud)
然后我去改变module2中的代码.事实证明reload(module1),即使在module1的顶部导入了module2的代码,调用也不会重新加载module2中更改的代码.有没有办法重新加载所有内容而无需重新启动解释器?
在任何人谈到我关于风格的案例之前,我只会说:
reload从解释器打电话,从不在活动代码中.这个问题涉及我在测试新代码时的问题.<module> import *,我知道这会破坏可读性在Cocoa中,NSTextView文本和边框之间的边距相当浅.有没有办法指定一个填充(文本和视图边界之间的距离),NSTextView而不诉诸所有者绘图?
我在ClientDataSet中有一个整数字段,我需要比较一些值,如下所示:
我可以使用const
const
mvValue1 = 1;
mvValue2 = 2;
if ClientDataSet_Field.AsInteger = mvValue1 then
Run Code Online (Sandbox Code Playgroud)
或者枚举
TMyValues = (mvValue1 = 1, mvValue2 = 2);
if ClientDataSet_Field.AsInteger = Integer(mvValue1) then
Run Code Online (Sandbox Code Playgroud)
或类const
TMyValue = class
const
Value1 = 1;
Value2 = 2;
end;
if ClientDataSet_Field.AsInteger = TMyValues.Value1 then
Run Code Online (Sandbox Code Playgroud)
我喜欢类const方法,但似乎不是delphi的方式,所以我想知道你的想法
我想在restructuredText中使用一些符号; 我怎样才能做到这一点?(例如,→在Markdown中产生标准HTML字符实体列表中定义的"→"符号- 另请参阅w3c参考)
注意:我不想要求数学公式支持作为依赖项.
我想为使用XML-RPC的应用程序编写一个GUI包装器,并想知道是否有任何可用于Cocoa的XML-RPC框架,如果有,那么什么是最好的?
提前致谢
.NET CLR是否可以支持Objective-C?是否有任何理由(从法律或实施的角度来看)为什么这是不可能的?
本着跨平台应用程序开发的精神,能够在Windows机器上编写和运行Objective-c应用程序会很不错.至少我认为会.
我希望我的HTML5应用程序能够绘制到两个不同的屏幕上.这(我认为)意味着我需要两个不同的浏览器窗口,每个屏幕一个.这可能吗?看来我真的必须将同一个应用程序加载到两个窗口中,并且不知何故让窗口相互通信.我找不到如何实现这一目标的例子.我怎样才能实现呢?
为了更加精彩:可能没有涉及服务器,只是从文件系统本地提供的应用程序.