在Objective-C中,我有一些关于合成属性的问题。 完整的列表如下,但基本的问题是这样的: 即使我的代码可能包含或不包含dealloc中的发布方法,编译器如何确保合成属性的ivars被正确释放? 注:我决定不把这些问题作为个别问题发布,因为它们之间关系如此密切,还有一些现存的问题涉及到个别问题,而没有真正处理问题的核心问题。 有些类似的问题: 财产保留是否需要发布? 财产和综合有什么区别? 保留属性与属性问题及综合 设置:考虑一个具有单个属性的类: @interface Person : NSObject { NSString * name; } @property (nonatomic, retain) name; @end 问题1:非常基本的情况: @implementation Person @synthesize name; @end 通过这个设置,我认为每当一个Person对象被释放时,这个name就会自动释放。 在我看来,编译器只是简单地将[name release]插入到dealloc方法中,就像我自己input了一样。 那是对的吗? 问题2:如果我select为这个类编写自己的dealloc方法,并且省略了对[name release]的调用,那么会泄漏吗? @implementation Person @synthesize name; – (void)dealloc { [super dealloc]; } @end 问题3:如果我select为这个类编写我自己的dealloc方法,并且包含对[name release]的调用,那么会导致双重释放,因为@synthesize已经为我处理了它? @implementation Person @synthesize name; – (void)dealloc { […]
我有一个方法,接受一个块和一个完成块。 第一个块应该在后台运行,而完成块应该在该方法被调用的任何队列中运行。 对于后者,我总是使用dispatch_get_current_queue() ,但似乎在iOS 6或更高版本中已被弃用。 我应该用什么来代替?
我正在为应用程序添加应用程序内购买。 我能够接收productsRequest:didReceiveResponse方法,并接收产品数组。 当我向SKPaymentQueue添加SKPayment时 ,会出现问题。 在将产品添加到队列后,在paymentQueue:updatedTransactions方法中,事务始终具有状态SKPaymentTransactionStateFailed 。 我NSLog“transaction.error”,这就是它返回:错误域= SKErrorDomain代码= 0 UserInfo = 0x165000“无法连接到iTunes Store” 我已经在“设置”应用程序中退出了商店,但在尝试在我的应用程序中购买产品后,从未要求我使用我的testing帐户login。 它只是以上述错误失败。
我听到有关这方面的一些相互矛盾的报道。 我想要做的是从一个URLstream媒体文件。 我已经做了几个小时的研究,但是我找不到有关如何做这件事的好的指南,甚至找不到什么样的audio播放器。 有些朋友告诉我,AVPlayer可以播放MP3,但苹果文件说,它不能。 我倒了Matt Gallagher的audiostream式传输器(http://www.cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html),但是那个代码很好,我已经足够新了,很难通过autoreleases和保留所有这一切。 我试图stream的audio是一个相当大的MP3文件从libsyn服务器,与格式的URL .. http://traffic.libsyn.com/podcastname/episode.mp3 所有我需要做的就是抓住它并开始玩,暂停和擦洗的能力。 所以首先,CAN AVPlayerstreamMP3的东西? 如果有的话,是否有人有指导或代码,他们可以指向我? 如果没有,有什么样的audio播放器类可以stream式audio? 我已经尝试创build一个AVPlayerItem,初始化的URL,然后将其添加到一个AVPlayer,但我得到了一吨错误加载…和符号未find…错误。 我会很感激这方面的任何信息,谢谢!
在我的问题“ 我怎么得到-[NSString sizeWithFont:forWidth:lineBreakMode:]工作? ”,我了解到-[NSString sizeWithFont:constrainedToSize:lineBreakMode:]实际上是我需要的。 -[NSString sizeWithFont:forWidth:lineBreakMode:]状态的文档解释了它实际上并没有将文本换行到其他行。 那么我将如何使用它? (例子会有所帮助)
我的应用程序是一个标签栏应用程序,每个标签都有一个单独的视图控制器。 我有一个对象在我的第一个视图控制器(A),其中包含我所有存储的应用程序数据(请忽略NSUserDefaults为此)需要由第二个视图控制器(B)访问时,我按下它的一个button。 我怎样才能以最好的方式做到这一点?
两天后,试图从PDF阅读使用Quartz的注释,我设法做到了,并张贴我的代码 。 现在我想为另一个常见问题做同样的事情:用QuartzsearchPDF文档。 和以前一样的情况,这个问题已经被问了很多次,几乎没有实际的答案。 所以我首先需要一些指针,因为我自己还没有实现。 我试过的: 我尝试使用CGPDFScannerScan处理TJ和Tj操作符 – 在某些PDF上返回正确的文本,而在其他文档中,它返回的主要是随机字母。 也许它与文本编码有关? 有人指出 ,文本块(由BT / ET运营商标记)应该被处理,但我仍然没有设法这样做。 任何人都设法从任何PDF中提取文本? 之后,通过将所有文本存储在NSMutableString并使用rangeOfString (如果有更好的方法请让我知道),search应该很容易。 但是如何突出结果呢? 我知道有几个操作符可以find字形的大小,所以我可以根据这些值来计算结果矩形,但是我一直在阅读规范几个小时…这是一个臃肿的混乱,我疯了。 任何人有一个实际的解释? 更新 用户Naveen Thunga发现PDFKitten是“从iOS中提取PDF数据的框架”。 我只是试图演示,它似乎工作广告。 我会用更多的PDFtesting它,并且会很快发布结果。 作为一个侧面说明,代码似乎对我来说非常好 – 如果你对这个东西是如何工作感兴趣的话,那真是太棒了。
我的iOS应用程序如何从设备控制台日志中读取消息。 我想以编程方式阅读这些日志条目(如阅读文件?),select一些,并通过电子邮件发送给支持。 我知道一个iPhone应用程序可以让你查看日志。 它的名字是Console。 但是,我不知道他使用了什么类或API。 有人build议使用ASL函数来完成,但是我不知道它们是什么或者它们在哪里被logging。 我也知道使用NSLog的一些select,如NSLogger和CocoaLumberJack,但是我们还没有准备好在这个时候实现这些。 非常感谢您的帮助!
在调用@property时,在Objective-C中使用下划线和使用self关键字有什么区别? 财产声明: @property (weak, nonatomic) NSString *myString; 在属性上调用@synthesize : @synthesize myString = _myString; 如果我想在我的代码中使用它,是否有区别? 什么时候? 在getter / setter? self.myString = @"test"; _myString = @"test";
我已经将所有相关代码添加到App Delegate中,并且可以将其添加到数据模型中,并从applicationDidFinishLaunchingWithOptions中的数据模型中获取。 我的问题是当我试图写入我的视图控制器中的数据模型。 我已经将这个代码添加到头文件中: NSFetchedResultsController *fetchedResultsController; NSManagedObjectContext *managedObjectContext; @property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController; @property (nonatomic, retain) NSManagedObjectContext *managedObjectContext; 而这个代码给我的实现文件: NSManagedObjectContext *context = [self managedObjectContext]; NSManagedObject *model = [NSEntityDescription insertNewObjectForEntityForName:@"Events" inManagedObjectContext:context]; [model setValue:@"Sample Event" forKey:@"eventName"]; NSError *error; if (![context save:&error]) { NSLog(@"Couldn't save: %@", [error localizedDescription]); } 但是,我得到以下错误: 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal […]