最近我读了两篇非常有意思的build议: 在对这个StackOverflow答案的评论中,@Mike Weller说要把你的断言放在生产代码中…真的是什么性能打击? 有什么理由不让他们进来吗? 在文森特·盖博的博客中 ,他表示你应该更喜欢assert NSAssert …是否有任何理由不使用assert ? (这是更less的信件:))
我的课有一个NSArray充满了对象。 在我的dealloc方法,我可以简单地调用释放我的NSArray,还是我需要迭代数组并释放所有对象?
可能重复: 为什么使用Autorelease池? 所有的Objective-C起始页面都在主函数声明下面打开一个默认的@autoreleasepool{…}语句。 但是这个陈述究竟在做什么呢? 新的Objective-C自动释放对象并删除行不会改变程序。 这个命令真的有必要吗?
我有点困惑,何时最好使用: static NSString *AppQuitGracefullyKey = @"AppQuitGracefully"; 代替 #define AppQuitGracefullyKey @"AppQuitGracefully" 我已经在C或C ++中看到类似这样的问题,我认为这里的不同之处在于,这是专门针对Objective C的,利用一个对象,而在像iPhone这样的设备上,可能存在堆栈,代码空间或内存问题我还没有把握。 一个用法是: appQuitGracefully = [[NSUserDefaults standardUserDefaults] integerForKey: AppQuitGracefullyKey]; 或者这只是一个风格问题? 谢谢。
我刚刚通过ios 6将facebook集成到了我的应用程序中,但在墙上张贴时遇到了问题。 它只是说“通过iOS应用程序发布” 。 我希望它说“通过应用程序名称发布” 。 我已经做了一个Facebook的应用程序标识,我有他们已经分配的应用程序编号,但我不知道如何将其与facebook集成进行整合。 以下是我的代码。 如果有人可以帮助,这将不胜感激。 谢谢! { NSString *message; message= [[NSString alloc] initWithFormat:@"I've earned %@ points", [self retrieveScore]]; if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; [controller setInitialText:message]; [controller addURL:[NSURL URLWithString:@"http://mysite"]]; [self presentViewController:controller animated:YES completion:Nil]; [message release]; SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){ NSString *output= nil; switch (result) { case SLComposeViewControllerResultCancelled: output= […]
我在一个multithreading的iOS应用程序中使用CoreData,并且一切似乎工作正常 – 除非我打开XCode中的exception断点。 每当我做一些CoreData工作,断点停止在NSManagedObjectContext上save: – 方法 – 但NSError之后为零。 我也没有什么在日志(除了: Catchpoint 2 (exception thrown). ),应用程序不会崩溃…所以很难分辨出什么问题。 我唯一的线索是在updatedObjects:有一个单独的对象updatedObjects:在我的NSManagedObjectContext – 但似乎没有错。 我的问题是非常类似于这个问题在stackoverflow ,但唯一的答案并没有帮助我; 我很确定,我已经覆盖了一切。 这里有什么可能是错的? 或者还有其他的可能性来获取一些错误信息? 非常感谢你! 编辑 :显示代码是非常困难的。 我用objectID加载对象,编辑并存储在分配给当前线程的上下文中。 我已经检查 – 上下文总是正确的当前线程; 每个线程都有自己的上下文,这不应该是问题。 如果只有人能告诉我如何从错误/例外中获得更多的信息,或者如果我必须关心它,这将是非常有帮助的。 在我看来,这个例外在“保存”方法中被捕获,所以可能它是一个“正常”的行为?
在Objective-C 2.0中,是否可以创build一个参数是可选的方法? 也就是说,你可以有一个像这样的方法调用: [aFraction print]; 以及这个: [aFraction print: someParameter]; 在同一个程序中。 苹果公司的Objective-C 2.0编程语言指南将Python与Obj-C做了对比,似乎这是不被允许的。 我还在学习,我想确定。 如果可能,那么语法是什么,因为我的第二个代码示例不起作用。 更新:好的,我只是提出了两个方法,都命名为“打印”。 头 -(void) print; -(void) print: (BOOL) someSetting; 履行 -(void) print { [self print:0]; } -(void) print: (BOOL) someSetting { BOOL sv; sv = someSetting; if ( sv ) { NSLog(@"cool stuff turned on"); } else { NSLog(@"cool stuff turned off"); […]
我正在使用SDWebImage库在我的应用程序中cachingWeb图像: https://github.com/rs/SDWebImage/blob/master/README.md 目前用途: [imageView setImageWithURL:[NSURL URLWithString:profilePictureUrl] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 我的问题是,一旦图像被caching,然后几天后,服务器上的图像文件已经更新了一个新的图像会发生什么? 目前我的应用程序仍然显示caching的图像。 我无法看到有关设置caching超时的任何文档,或者可以识别文件大小已更改的文档。 如果任何人有经验使用这个特殊的图书馆,那么任何帮助将不胜感激。 提前致谢。
我正在使用IBOutletCollections将几个类似的UI元素的实例分组。 尤其是我将许多UIButtons(类似于问答游戏中的蜂鸣器)和一组UILabels(显示分数)分组。 我想确保直接在button上的标签更新分数。 我认为按索引访问它们是最容易的。 不幸的是,即使我以相同的顺序添加它们,它们并不总是具有相同的索引。 在Interface Builder中有没有办法设置正确的顺序。
在编写朱利安日计算器的unit testing时,我发现1847年12月2日之前的date被NSDate错误地初始化。 他们似乎有75秒的时间。 我一直没有find指向那个date的东西(这是在公历截止之后)。 这是一个错误还是有历史的日历调整,我没有遇到? int main(int argc, const char * argv[]) { @autoreleasepool { NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *dateComps = [NSDateComponents new]; dateComps.year = 1847; dateComps.month = 12; dateComps.day = 1; NSDate *d1 = [cal dateFromComponents:dateComps]; NSLog(@"d1 = %@", d1); dateComps = [NSDateComponents new]; dateComps.year = 1847; dateComps.month = 12; dateComps.day = […]