Tag: 指针

Objective-c:知道内存位置是否被释放

我已经为iOS项目实现了一个下载器。 它接受请求,并在下载完成后由代理响应目标。 它是asynchronous的,目标(显然)是一个弱引用,所以当下载完成后,如果目标没有更多的分配,我有一个bad_acces。 我已经解决了在所有请求中search目标并将其设置为零的方法(在使用它的对象被释放时调用)。 这是远离我想要的行为(完全独立于其他对象:如果不再需要下载,它将被caching:它没有方法来停止下载,但只有一个优先级队列)有一个安全的方法来知道是否一个指针仍然指向一个有效的内存地址?

__builtin_va_arg(指向指针的指针)

我有一个代码提取方法的参数。 va_list argp2; va_start(argp2, sel); NSURLResponse* obj = va_arg(*argp2,NSURLResponse**); argp2包含方法的参数[NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error] 我想转换argp2得到一个指向响应和错误对象。 谢谢

如何在Objective C中创build一个指针来快速?

我正在开发一个iOS应用程序,我想创build一个指向我的swift代码中的视图的指针。 目前我在我的目标C文件中有这个: MyViewController *viewController=[MyViewController new]; 在我的MyViewController.swift我有一个UIView字段,我想要显示的东西,我在我的目标C文件中处理。 就目前来说,这是行不通的,我的印象是我误解了一些东西。 我的当前指针是指MyViewController的特定实例,还是指向类? (这个问题跟在我以前的问题: 如何在iOS中集成pjsipvideo? ) 谢谢

Objective-C指针/内存pipe理问题

我正在testing下面的代码。 在接口文件中声明ffv。 ffv = [[FullFunctionView alloc] initWithFrame:self.view.bounds]; NSLog(@"%i", [ffv retainCount]); // prints 1 [self.view insertSubview:ffv belowSubview:switchViewsBtn]; NSLog(@"%i", [ffv retainCount]); // prints 2 [ffv release]; // you can release it now since the view has ownership of ffv NSLog(@"%i", [ffv retainCount]); // prints 1 if (ffv == nil) NSLog(@"ffv is nil"); // "ffv is nil" is […]

iOS中的double / float align和long long / int align有什么区别

在iOS中用C / C ++编写代码,在下面的代码中: double value = *((double(*)p) ; (p指向足够长的内存) 当p的地址alignment到8字节时,就可以了; 当p的地址不alignment到8字节时,代码崩溃; 浮动types的问题是一样的翻倍 当我将代码更改为: double value = *((long long*)p) ; 代码是好的,即使p不是alignment到8个字节。 所以我有三个问题: 如何赋值p指向double / float的值? 为什么长长的*即使p不是8字节alignment也可以? 这个代码在X86窗口/ linux中可以,为什么?

有关UnsafeMutablePointer的destroy()的术语

/// Destroy the object the pointer points to. /// /// Precondition: the memory is initialized. /// /// Postcondition: the value has been destroyed and the memory must /// be initialized before being used again. func destroy() 在这种情况下,术语object , memory和value是什么意思?

Objective-C:你可以testing静态类types的未初始化的指针吗?

我正在尝试做一些事情: 在一些物体A: UITableVIewController *viewController; [someObjectB setupView: viewController]; 在一些物体B: -(void) setupView:(UIViewController*)view { if the pointer passed in is of type UITableViewController then … say, for instance with: [[view class] isKindOfClass [UITableViewController class]] or: [view isKindOfClass [UITableViewController class]] } 但是,我有两个问题:首先,参数作为UITableView(我正在做,因为这个方法也会configuration其他types的视图控制器)的超类UIViewController进入B方法的事实。 所以我想知道,如果我将UITableViewController传递给types为UIViewController的方法参数,isKindOfClass仍然会dynamic绑定吗? 也就是说,运行时检查内容的types,而不pipe指针的静态types如何? 其次,请注意,在传递给B之前,我没有初始化对象A中的指针。实际上,我希望B初始化它。 但是后来buy的问题就变成了,我怎么testing一个未初始化的指针上的静态指针types呢? 也就是在B里面:[view isKindOfClass [UITableViewController class]]给了我一个BAD_EXEC。 我的猜测,因为我显然是试图访问一个JUL指针。 那么还有一种方法可以根据指针的静态types声明来进行testing吗? 附加:(因为我把它添加为一个评论,而不是,对不起) 让我用更具体的术语来重新说明这个问题的一部分:我想obj B创build一个UITableViewControllertypes的variables,将它传递给A,并且A意识到它被赋予了一个指向UITableViewController的指针,以便它实际上可以初始化这个指针UITableViewController的一个特定的子类,然后obj B将该对象初始化为其他对象。 我想要做到这一点的理由是以下情况:我有一个基于导航控制器的应用程序。 它有一个带有button的根控制器,根据哪个button被按下,根控制器实例化并推送表控制器用于数据库的不同表,并且当点击这些表的一行时,表实例化并推送详细的视图控制器。 到目前为止这么好,但由于项目的性质,我想保持整个navigationcontroller实例化推链不可知的事实,有一个数据库,表和详细视图控制器实际上是UITableViewController和UIViewController的具体子类, […]

从Swift调用C函数

我想从Swift调用C函数,但我不知道如何定义variables来传递参数。 函数c是: DBFGetFieldInfo( DBFHandle psDBF, int iField, char * pszFieldName, int * pnWidth, int * pnDecimals ); 主要问题是pszFieldName , pnWidth和pnDecimals inout参数。 我试过了: var dbf:DBFHandle = DBFOpen(pszPath, "rb") var fName:[CChar] = [] var fieldWidth:Int32 = 0 let fieldDecimals:Int32 = 0 let fieldInfo:DBFFieldType = DBFGetFieldInfo(dbf, i, fName, &fieldWidth, &fieldDecimals) 但它给了我一个错误 Cannot invoke 'DBFGetFieldInfo' with an argument list […]

初始化使得整型指针没有强制转换

好的,我正在用这个很难。 我已经search了过去的一小时,我不明白我做错了什么。 我试图把发送者的currentTitle,然后将其转换为一个整数,所以我可以在调用列表中使用它。 NSString *str = [sender currentTitle]; NSInteger *nt = [str integerValue]; // this is where the error appears // NSString *nextScreen = [NSString stringWithFormat:@"Screen_%@.jpg", [screenList objectAtIndex:nt]]; 我认为这是与[str integerValue]位不正确使用,但我找不到一个有效的例子。 谢谢!

无法理解NSError / NSObject指针传递行为

即使我已经阅读,我现在困惑于指针指针为什么NSError需要双重间接? (指针指针)和NSError * vs NSError **等等。 我做了一些思考,仍然有一些问题。 在这里我写了这个: NSError *error = [NSError errorWithDomain:@"before" code:0 userInfo:nil]; NSLog(@"outside error address: %p", &error]; [self doSomethingWithObj:nil error:&error]; 为了testing上面的NSError方法,我写了这个: – (id)doSomethingWithObj:(NSObject *)obj error:(NSError *__autoreleasing *)error { NSLog(@"inside error address: %p", error); id object = obj; if (object != nil) { return object; } else { NSError *tmp = [NSError errorWithDomain:@"after" […]