Tag: nsinvocation

NSInvocation和内存问题

所以我来自Java世界,我们对内存pipe理问题非常无知。 大多数情况下,ARC已经救了我的屁股,但是这是让我难住的东西。 基本上我使用NSInvocations的东西,我遇到了一些讨厌的内存问题,我做了下面的代码修改。 由于我做了这些修改,内存崩溃已经消失,但我通常非常害怕我不明白的代码。 我做对了吗? 之前:各种内存问题: NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[[target class] instanceMethodSignatureForSelector:selector]]; [invocation setSelector:selector]; [invocation setTarget:target]; [invocation setArgument:&data atIndex:2]; [invocation setArgument:&arg atIndex:3]; [invocation invoke]; NSString *returnValue; [invocation getReturnValue:&returnValue]; 之后:没有内存问题,但我不知道我有这个权利: NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[[target class] instanceMethodSignatureForSelector:selector]]; [invocation setSelector:selector]; [invocation setTarget:target]; [invocation setArgument:&data atIndex:2]; [invocation setArgument:&arg atIndex:3]; [invocation invoke]; CFTypeRef result; [invocation getReturnValue:&result]; if (result) […]

– 带有double值的意外地产生0

我想调用一个方法,返回一个使用NSInvocation的double NSInvocation 。 但我发现它不适用于64位iOS应用程序。 它适用于OS X,模拟器(包括32位和64位),iPad 2和iPad Air(32位版本)。 只有iPad Air设备上的64位版本具有此问题。 这是演示问题的代码: NSMethodSignature *signature = [NSString instanceMethodSignatureForSelector:@selector(doubleValue)]; for (int i = 0; i < 10; i++) { NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; NSString *str = [NSString stringWithFormat:@"%d", i]; [invocation setTarget:str]; [invocation setSelector:@selector(doubleValue)]; [invocation invoke]; union { double d; uint64_t u; } d; [invocation getReturnValue:&d.d]; NSLog(@"%lf, %llx", […]

NSInvocation返回值,但通过EXC_BAD_ACCESS使应用程序崩溃

我有一个数组,我正在迭代并寻找一个特定的标志。 如果标志值为零,我正在调用一个方法来生成一个调用对象并返callback用的结果。 我的代码结构如下 for(NSString *key in [taxiPlanes allKeys]) { Plane *currentPlane = [taxiPlanes objectForKey:key]; if(currentPlane.currentAction == nil) { NSString *selector = [[currentPlane planeTakeoffSequence] firstObject]; currentPlane.currentAction = selector; // Calling for NSInvocation in [self …] NSArray *action = [NSArray arrayWithArray:[self operationFromTakeoffAction:currentPlane.currentAction AtPoint:currentPlane.position]]; NSLog(@"%@",action); } } 生成NSInvocation的方法 -(NSArray *) operationFromTakeoffAction:(NSString *) action AtPoint:(CGPoint) flightPoint { NSMethodSignature *methodSignature […]

定义一个没有基类的Objective-C类 – 编译器警告

我正在使用以下NSInvocation代码forms马特加拉格尔我的撤消/重做代码。 虽然与最新版本的xCode我没有得到一个警告说:NSInvocation(ForwardedConstruction).m:28:12:类'InvocationProxy'定义没有指定基类 该守则很好,但我的团队(我也是)不喜欢看到这个警告。 我希望类尽可能修剪,所以我不想在NSObject中的所有方法。 任何build议欢迎! 谢谢! NSInvocation的(ForwardedConstruction).H // // NSInvocation(ForwardedConstruction).h // // Created by Matt Gallagher on 19/03/07. // Copyright 2007 Matt Gallagher. All rights reserved. // // Permission is given to use this source code file without charge in any // project, commercial or otherwise, entirely at your risk, with the condition // that […]

带有NSOperation的asynchronousNSURLConnection

我想在后台模式下做NSURLConnection ,因为它的响应是有很多数据的didEnterBackground告诉使用Apple的有限长度编码在didEnterBackground使用。 但我想避免它。取而代之,我使用下面的代码通过与NSInvocation NSOperation作为,但它不工作。 connectToServer有NSURLConnection operation.any帮助吗? didReceiveData , didReceiveResponse委托方法不被调用? NSOperationQueue *queue = [NSOperationQueue new]; NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(connectToServer) object:nil]; [queue addOperation:operation]; [operation release]; [queue autorelease]; -(void)connectToServer { NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; NSURLConnection *theConnection = [[[NSURLConnection alloc] initWithRequest:theRequest delegate:self] autorelease]; if( theConnection ) { webData = [[NSMutableData […]