当我将代码粘贴到我的Mac OS X终端窗口到vim时,它会缩进每一行.对于每一行,它添加一个缩进,所以文本看起来像这样......
"ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum."
Run Code Online (Sandbox Code Playgroud)
我目前的解决方法是先将文本粘贴到textmate文本编辑器中,以保持正确的格式.然后我保存该文件并在vim中打开它.然后我用vim yank粘贴它.
我的.vimrc中是否有可能改变此行为的设置?或者这是一个终端问题?
背景:CamelBones使用Objective-C运行时注册Perl类.为此,每个Perl方法都注册了相同的IMP函数; 该函数检查其self
&_cmd
参数以查找要调用的Perl方法.
对于已发送的消息,这已经好几年了objc_msgSend
.但是现在我想添加对从Perl方法返回浮点和大型结构类型的支持.浮点并不难; 我只需编写另一个返回double的IMP,来处理调度的消息objc_msgSend_fpret
.
问题是该怎么做objc_msgSend_stret
.IMP
为每个可能的结构返回类型编写一个单独的是不切实际的,原因有两个:首先,因为即使我这样做只是为了在编译时已知的结构类型,这是一个荒谬的函数数量.第二,因为我们讨论的是可以与任意Objective-C和Perl代码链接的框架,所以在编译框架时我们并不知道所有可能的结构类型.
我希望做的是编写一个IMP
可以处理通过调度发送的任何返回类型的单个objc_msgSend_stret
.我可以把它写成返回void
,并将指针参数传递给返回缓冲区,就像旧的objc_msgSend_stret
声明一样吗?即使这件事现在正常工作,我还能继续在将来继续工作吗?
感谢您的任何建议 - 我一直在讨论这个问题.:-)
更新:
以下是我从Apple的运行工程师那里收到的关于他们的objc语言邮件列表的建议:
您必须编写汇编代码来处理这种情况.
您的建议在某些体系结构上失败,其中"函数返回void以指向结构作为第一个参数的指针"的ABI与"返回结构的函数"不同.(在i386上,结构地址在一种情况下由调用者从堆栈中弹出,在另一种情况下由被调用者弹出.)这就是原型的
objc_msgSend_stret
更改.汇编代码将捕获struct返回地址,将其走私到非struct-return C函数调用中而不会干扰其余参数,然后在退出时执行正确的ABI特定清理(
ret $4
在i386上).或者,汇编代码可以捕获所有参数.转发机械做这样的事情.如果你想看看这些技术是什么样的,那么该代码可能在开源CoreFoundation中.
我会把这个问题保持开放,以防有人集体讨论更好的想法,但直接来自Apple自己的"运行时争吵者",我认为这可能是我可能得到的权威答案.是时候把x86参考手册上的灰尘弄掉,然后把我的装配工的铁锈搞得一团糟,我猜...
在本地计算机上而不是在集中式开发服务器上进行Web开发的利弊是什么?对于那些在本地机器上执行dev的人,当涉及多个开发人员时,如何为本地开发保留更新的数据库体系结构?
特别是,我正在尝试使用XAMPP for PHP,并且很好奇当其他开发人员定期更改数据/数据库结构时,我如何使MySQL数据库实例保持同步.
当地开发只在单独工作时才有用吗?
这段代码是否正确
@implementation Vehicle
+(id) vehicleWithColor:(NSColor*)color {
id newInstance = [[[self class] alloc] init]; // PERFECT, the class is // dynamically identified
[newInstance setColor:color];
return [newInstance autorelease];
}
@end
Run Code Online (Sandbox Code Playgroud)
为何使用[自习班]
我认为自己已经指向静态方法的类(带+的那些)
如何在Objective-C中比较自定义类的两个对象?我试着重载
- (NSComparisonResult)compare:(id)other;
方法.如果我手动调用该方法,这非常有效
if ([obj1 compare:obj2] == NSOrderedDescending) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
我有什么方法可以这样做吗?
if (obj1 > obj2) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
还是有另一种方法需要重载?