Tag: objective c

Objective-C如何编译?

我只是很好奇,Objective-C是否编译成C代码或者Objective-C运行时是否像程序上方的抽象层一样工作? 如果我不知道我在说什么,请提前抱歉!

如何在Objective-c中为C函数指定一个指向’self’(调用obj)的指针?

大家好! 我对objective-c相当新,所以我从来没有解决过这个问题。 我在objective-c类中有一个C函数,我希望能够在包含objective-c类的属性上调用一个方法。 我明白,如果我尝试发送消息,我的C函数将无法理解“自我”是什么[self.delegate doSomething] 我假设我需要做的是给我的c函数指向我的类,所以我可以做这样的事情: myClass-> delegate – > doSomething(); 我想在全局变量中存储指向当前对象(self)的指针,因为我无法更改函数签名。 我希望能够从该类中定义的任何C函数访问指针。 这样做的原因是我正在编写一个我正在尝试使用的C库的包装器。 如果它可以帮助..我宁愿不修改此库的源。 有人可以帮我解决如何获取指向当前对象的指针吗? 谢谢! void event_privmsg (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) { //[self.delegate privateMessage]; I would like to do the following }

如何以编程方式获取mac os x macbooks的电池寿命?

我想要做的是记录电池百分比。 我知道linux中的等价物是sysctl(hw.acpi.battery.life)。 但是,当我在mac os x中通过sysctl的人时,我找不到找到它的等效代码。 有人可以指出如何使用目标c来做到这一点。 我可以调用sysctlbyname但是它的结构中没有这个输入。 请帮助我

在iOS上使用libssh2反向端口转发

我正在使用libssh2在iOS上寻找一个反向端口转发的示例代码。 这是一个接近的例子: libssh2的示例代码用于端口转发 但我希望它可以根据iOS和Objective-C进行定制。 直C也很好。 我对socket和FD代码很谨慎,宁可拥有一个强大的解决方案而不是我正在攻击的解决方案。 我已经尝试了一段时间的RTFMing libssh2,但它最终只是RTF代码…而且我对我的C代码没有足够的信心去做这个网络部分。 编辑:在iOS 4.3(例如iphone4,ipad2)上进行端口转发的ssh工作实现的赏金,不需要特定的libssh2 。

在C和Objective-C中,我们应该使用0.5f还是0.5?

我看到作者使用的地方有很多: sprite.anchorPoint = CGPointMake(1, 0.5f); 也就是说,为什么不使用0.5代替0.5f – 是否有使用0.5f优势?

“EXC_BAD_ACCESS”与“分段错误”。 实际上是否相同?

在我的前几个虚拟应用程序中(为了练习而学习)我遇到了很多EXC_BAD_ACCESS ,它以某种方式告诉我Bad-Access是:您正在触摸/访问您不应该访问的对象,因为它尚未分配或取消分配或只是您无权访问它。 看看这个具有错误访问问题的示例代码,因为我试图修改一个const : -(void)myStartMethod{ NSString *str = @”testing”; const char *charStr = [str UTF8String]; charStr[4] = ‘\0’; // bad access on this line. NSLog(@”%s”,charStr); } 虽然分段错误说 :分段错误是一种特殊的错误,它是由访问“不属于你”的内存引起的。它是一种帮助机制,可以防止破坏内存并引入难以调试的内存错误。 每当你遇到段错误时,你就知道你在做错了记忆( 这里有更多描述)。 我想知道两件事。 一 ,我对objective-C’s EXC_BAD_ACCESS吗? 我做对了吗? 第二 , EXC_BAD_ACCESS and Segmentation fault是否有EXC_BAD_ACCESS and Segmentation fault ,Apple刚刚即兴创作了它的名字?

快速找到下一个数字的倍数

我需要找到从基数开始的数字的第一个倍数。 例如:7的3的第一个倍数是9.我的第一次尝试是这样做: multiple = baseNumber while(multiple%number !=0 ) multiple++ 最后,“multiple”将具有baseNumber之后的第一个number baseNumber 。 问题是当number变得太大时,迭代次数变得太多。 所以我的问题是:有更快的方法吗?

宏突出显示为关键字:pascal

在查看FunkyOverlayWindow的示例代码时,我发现了一个非常有趣的声明: pascal OSStatus MyHotKeyHandler( EventHandlerCallRef nextHandler, EventRef theEvent, void *userData ); 在这里, pascal被突出显示为关键字(标准Xcode颜色方案中的粉红色)。 但我发现它是一个宏,有趣的是在文件CarbonCore / ConditionalMacros.h中定义为: #define pascal 那么,它应该做什么(或者是什么)呢? 也许它在过去有一些特殊的用途? 虽然这里的讨论可能不太适合,但如果这与答案有关,那么知道为什么Apple仍在使用Carbon会很有趣。 我没有Carbon的经验,但是这段代码似乎设置了一个键盘事件处理程序,让我想知道是否有任何优于Cocoa方法的优点。 碳不会被彻底清除吗?

如何将cstring转换为NSString和NSString转换为cstring?

可以说我有以下cstring char array[1000]; 我如何将其转换为NSString和反之亦然。 谢谢。

混淆宏扩展

可能重复: 谁能解释这些未定义的行为(i = i ++ + ++ i,i = i ++等…) 以下宏可能给应用程序带来哪些问题? 我编写了一个带有宏扩展的示例应用程序,用于在我的iOS(Objective C代码)中实现它。 它是这样的: #define SQUARE(x) ( x * x ) main( ) { int i = 3, j, k ; j = SQUARE( i++ ) ; k = SQUARE( ++i ) ; printf ( “\nValue of i++ = %d\nValue of ++i = %d”, […]