Tag: 自动计数

ARRK! ARC错误:'CFTypeRef'(aka'const void *')为'NSNumber *'是不允许的

我试图将一些Apple代码(从SquareCam例子)转换为ARC。 我有苹果代码被标记为非ARC的编译,它的工作,但我得到的崩溃错误之间的非ARC上下文的ARC图像传递图像 – 所以我试图解决这个问题。 无论如何,我认为除了这一行之外,我已经掌握了所有的ARC工具: NSNumber *orientation = CMGetAttachment(imageDataSampleBuffer, kCGImagePropertyOrientation, NULL); 这用于CIDetectorImageOrientation键值(CoreImage人脸检测)。 我得到了下面这个ARC错误,我没有尝试解决这个问题。 “imageDataSampleBuffer”的types是CMSampleBufferRef 。 什么是正确的方式来将CFTypeRef转换为我需要的NSNumber? – 谢谢! 将非Objective-C指针types“CFTypeRef”(又名'const void *')隐式转换为“NSNumber *”,ARC不允许

在成功工作之后,在发生SimplePost请求的无法识别的select器上崩溃。

我一直在使用SimplePost类几个星期,并没有任何问题。 现在我在一个请求返回Connection中正确的数据之后崩溃了。 我没有(明知)触摸SimplePost类文件。 但是当我运行分析器时,它现在(从未做过)指出以下方法: + (NSMutableURLRequest *) urlencodedRequestWithURL:(NSURL *)url andDataDictionary:(NSDictionary *) dictionary { // Create POST request NSMutableURLRequest *urlencodedPostRequest = [NSMutableURLRequest requestWithURL:url]; [urlencodedPostRequest setHTTPMethod:@"POST"]; // Add HTTP header info [urlencodedPostRequest addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField: @"Content-Type"]; // Add POST body NSMutableData *POSTBody = [NSMutableData data]; // Add k/v to the body NSArray *keyArray = [dictionary allKeys]; for( int […]

衡量强/弱ARC引用的影响 – 对执行时间的影响

我想知道是否(和多less)强/弱引用pipe理对代码执行有影响,尤其是当释放许多类可能具有弱引用的对象时。 起初我把它误认为ARC,但事实并非如此。 关于同一个话题也有类似的问题 ,但是他们没有研究性能影响或者试图从中得到一些数据。 让我清楚一点:我不是说ARC或者强/弱可能会对性能造成不好的影响,或者说“不要使用这个”。 我喜欢这个。 我只是好奇它有多高效,以及如何确定它的大小。 我把这段代码放在一起,以便了解强/弱引用在执行时的性能影响。 import Foundation class Experiment1Class { weak var aClass: Experiment1Class? } class Experiment2Class { var aClass: Experiment2Class? } var persistentClass: Experiment1Class? = Experiment1Class() var nonWeakPersistentClass: Experiment2Class? = Experiment2Class() var classHolder = [Experiment1Class]() var nonWeakClassholder = [Experiment2Class]() for _ in 1…1000 { let aNewClass = Experiment1Class() aNewClass.aClass = persistentClass […]

对象在ARC模式下解除分配

该对象在ARC模式下解除分配并导致崩溃。 我的代码在下面; BlockAlertView* alert = [BlockAlertView alertWithTitle:title message:message]; [alert setCancelButtonWithTitle:NSLocalizedString(@"No", @"No Button") block:nil]; [alert addButtonWithTitle:NSLocalizedString(@"Yes", @"Yes Button") block:^{ //Do Something }]; [alert show]; 它显示正确的警报视图(这是自定义的UIView),但当我点击其中一个button崩溃。 崩溃日志; 2015-04-07 22:28:17.065 Test[3213:781570] <BlockAlertView: 0x16bb4160> 2015-04-07 22:33:01.746 Test[3213:781570] *** -[BlockAlertView performSelector:withObject:withObject:]: message sent to deallocated instance 0x16bb4160 这里是BlockAlertView的源代码; 在Github上的BlockAlertView 现在我不能估计任何线索,让我老了。 任何input将不胜感激!

SudzC ARC版本 – objc_msg发送调用导致使用64位架构的EXC_BAD_ACCESS

编辑 – 我已经跟踪下面的问题到64位和32位体系结构的问题…看到我已发布的答案我如何解决 我使用SudzC为Web服务生成SOAP代码。 他们提供了一个示例应用程序,我可以在设备和模拟器上成功使用。 然后我开始构build我的应用程序。 我使用空白的应用程序模板(启用了CoreData和ARC)将SudzC生成的文件导入到一个新的XCode项目中。 我得到了第一个SOAP请求,并运行 – 一切工作在模拟器 – 然后我去做一个设备(iPhone 5S运行iOS 7.02)的第一次testing。 每次运行SOAP请求时,设备都会引发EXC_BAD_ACCESS错误。 我跟踪到了SoapRequest.m文件,特别是connectionDidFinishLoading方法。 此方法使用objc_msgSend调用将SOAP响应数据发送回另一个类(本例中为视图控制器)中的处理程序方法。 代码如下: SoapRequest.m: – (void)connectionDidFinishLoading:(NSURLConnection *)connection { NSError* error; if(self.logging == YES) { NSString* response = [[NSString alloc] initWithData: self.receivedData encoding: NSUTF8StringEncoding]; NSLog(@"%@", response); } CXMLDocument* doc = [[CXMLDocument alloc] initWithData: self.receivedData options: 0 error: &error]; if(doc == nil) […]

– :发送到释放实例的消息

我已经将我的应用程序转换为使用ARC。 在我有以下的代码行之前: NSArray *colors = [NSArray arrayWithObjects:startColor, endColor, nil]; 由于ARC不允许将非Objective-C指针types隐式转换为“id”,所以我重写了这样一行: NSArray *colors = [NSArray arrayWithObjects:(__bridge id)startColor, (__bridge id)endColor, nil]; 一切工作正常在模拟器上,但在设备上的应用程序崩溃在提到的行与错误信息: -[Not A Type retain]: message sent to deallocated instance 任何想法如何解决?

在ARC中伪造va_list

我需要在iOS应用程序中创build一个虚拟的va_list传递给一个NSString的initWithFormat:arguments: function,这是我的代码: NSArray *fixedArguments = [[NSArray alloc] initWithArray:arguments]; NSRange range = NSMakeRange(0, [fixedArguments count]); va_list fakeArgList = (va_list)malloc(sizeof(NSString *) * [fixedArguments count]); __unsafe_unretained id *ptr = (__unsafe_unretained id *)fakeArgList; [fixedArguments getObjects:ptr range:range]; content = [[NSString alloc] initWithFormat:outputFormat arguments:(va_list)fakeArgList]; free(fakeArgList); 编译器会在cast行上抱怨这条消息: error: cast of a non-Objective-C pointer type 'va_list' (aka 'char *') to '__unsafe_unretained id *' […]