草庐IT

Objective-J

全部标签

objective-c - 构造带 block 参数的 NSInvocation

我正在尝试将Block作为参数发送给NSInvocation调用的方法(对于上下文,它由NSInvocationOperation触发)。调用应该保留参数,它似乎适用于“常规”对象参数,但Block的retainCount保持在1。我可以在方法调用中使用它之后释放它,但如果在调用操作之前队列被解散,理论上可能会泄漏它。部分代码:NSInvocationOperation*load=[[NSInvocationOperationalloc]initWithInvocation:loadInvoc];NSAssert([loadInvocargumentsRetained],@"Argum

objective-c - 为什么这个对象释放不正常,我应该释放它吗?

你必须原谅我,因为我对Obj-C还是很陌生,但我很困惑..我有一个带有12个按钮的小声板应用程序..每个按钮调用相同的IBAction..当用户点击按钮时,我在播放器变量上调用allocinit(在类的接口(interface)部分声明)这一切都很好,花花公子:#pragmamark-IBActions-(IBAction)userDidTapButton:(id)sender{[playerstop];NSURL*soundClip=[NSURLfileURLWithPath:[[NSBundlemainBundle]pathForResource:@"clip"ofType:@"m

objective-c - 需要有关吞噬 RAM 的循环的帮助

我正试图让这个循环释放它使用的所有内存,但它仍然很快地吞噬了RAM。希望有人能告诉我如何让字符串按应有的方式解除分配。基本上,循环将double写入文本文件,有时它必须写入几兆字节。for(inti=0;i 最佳答案 你唯一可以对字符串做的就是不使用print_str因为它仍然包含所有字符串并占用内存。使用fopen中的"a"选项将数据追加到文件中,将格式化后的字符串add_str追加到文件中,而不是添加到内存中缓冲。 关于objective-c-需要有关吞噬RAM的循环的帮助,我们在S

objective-c - 在不滥用 [UIView animateWithDuration] 的情况下延迟后触发方法?

我有一个UIViewController,它应该控制2个UIImageView淡入。我设法使用UIViewanimateWithDuration方法为它们制作动画,如下所示:[UIViewanimateWithDuration:1.5animations:^{[mFrontpageTitlesetAlpha:0];[mFrontpageTitlesetAlpha:1];}completion:^(BOOLfinished){[selfAnimatePause];}];和-(void)AnimatePause{[UIViewanimateWithDuration:5.0animation

objective-c - iOS:时钟更改后重新创建倒数计时器?

我正在开发一个使用NSTimer进行倒计时的iOS应用程序。这很容易被用户篡改:例如,如果用户退出应用程序、手动关闭应用程序、更改设备时钟并返回,则必须重新创建计时器。另一种情况:用户锁定设备,它进入低功耗模式(这需要重新创建计时器),并且在游戏再次打开之前时钟自动设置。如果发生这种情况,我将无法准确确定应用程序关闭后经过了多长时间,因为设备时钟已更改。Tl;dr:有时必须在设备时钟更改后重新创建倒数计时器。通常如何处理这个问题? 最佳答案 任何时候您依赖系统时钟进行准确计时都会遇到麻烦,即使用户没有故意篡改时钟也是如此。通常通过稍

objective-c - 我是否必须保留/释放从 NSDictionary 获取的值?

通常我会做这样的事情(如下)来获得我需要的值(value):NSDictionary*state=[notification.userInfoobjectForKey:@"state"];[self.tabBarItemsetBadgeValue:[stateobjectForKey:@"short"]];但是否值得对从NSDictionary中获取的值进行保留/释放?像这样:NSDictionary*state=[[notification.userInfoobjectForKey:@"state"]retain];[self.tabBarItemsetBadgeValue:[sta

objective-c - 隐藏 UIStatusBar 在屏幕上留下空白的蓝色条

我有一个纵向iPhone应用程序,它有一个隐藏的导航栏,用于控制View之间的流动。在一个View中,我需要将View旋转90度以横向显示,并且我想隐藏状态栏。问题是,虽然状态栏被正确隐藏,但它会在屏幕顶部留下一个空的浅蓝色栏,而状态栏所在的位置。我的View实际上位于此栏下方,填满了屏幕。我试过调整View大小,但它已经设置为屏幕的完整大小。似乎这个蓝色条在我的视野之上。会不会是我把导航栏和状态栏都隐藏了?任何帮助,非常感谢。邓克 最佳答案 如果您使用的是隐藏导航栏的UINavigationController(UINavigat

objective-c - 关于单例和调用方法的问题

我创建了一个单例来执行一些服务器请求。但是对于某些请求,我需要取回结果。从调用类(使用单例)获取它们的最佳方法是什么?这是接收到数据时由单例调用的方法。我是否应该将目标和选择器传递给单例以执行调用程序类的方法?-(void)connectionDidFinishLoading:(NSURLConnection*)connection{//dosomethingwiththedata//invokingpassedselectorhere?//receivedDataisdeclaredasamethodinstanceelsewhereNSLog(@"Succeeded!Receive

objective-c - 我不明白什么时候需要调用覆盖的方法,或者只是不需要。

我不明白什么时候需要调用重写的方法或者不需要调用。比如对于dealloc来说是必须的-(void)dealloc{...[superdealloc];}我想对于init也是..-(void)init{[superinit];..}viewWillAppear呢?我应该在自定义代码之前还是之后调用super方法?(void)viewWillAppear:(BOOL)animated{[superviewWillAppear:animated];}谢谢 最佳答案 要确定是否以及何时在覆盖的方法中调用super的唯一方法是阅读该方法的文档

objective-c - char 数组到 [NSString stringWithFormat :]

我的代码中有这段代码(md5哈希)unsignedcharresult[16];//fillresultwithdata[NSStringstringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7],result[8],result[9],result[10],result[11],result[12],result[13