autorelease相关内容
我正在调用一个进入后台线程的方法: [self performSelectorInBackground:@selector(loadViewControllerWithIndex:) withObject:[NSNumber numberWithInt:viewControllerIndex]]; 然后,我有这个由选择器调用的方法实现: - (void) loadViewController
..
我有一个需要很长时间的任务,应该在后台运行.根据文档,这可以使用 NSOperationQueue 来完成.但是,我不想保留 NSOperationQueue 的类全局副本,因为我真的只将它用于一项任务.因此,我只是将它设置为 autorelease 并希望它在任务完成之前不会被释放.它有效. 像这样: NSInvocationOperation *theTask = [NSInvocatio
..
鉴于此代码: //初始化字符串NSString *name = @"Franzi"; @"" 宏使用给定的文本(这里是名称 Franzi)和 RETAIN COUNT OF 1 创建一个 NSString? 所以@"" 给出了一个必须被释放的 NSString 吗?我对这个对象负责吗?第二个代码示例让我感到困惑,即使我是这样使用的: NSSting *message;message =
..
我正在使用 Objective-C 编写应用程序,但出现此错误: MyApp(2121,0xb0185000) malloc: *** error for object 0x1068310: double free *** 在 malloc_error_break 中设置断点进行调试 当我释放一个 NSAutoreleasePool 并且我无法弄清楚我释放了两次什么对象时就会
..
在等待开发者发布状态批准后,谁能告诉我如何在新的 iTunesConnect 界面中设置特定的发布日期? 出于某种原因,我们现在应该在周末发布,因此从手动发布更改为日期会很好.但是现在应用程序处于待开发人员发布状态,我再也找不到特定发布日期的选项. 解决方案 根据 Apple 应用分发指南: 使用 iTunes Connect 设置应用在商店上架的日期.例如,您可以选择在应用获
..
我很难准确理解何时在 AppKit 应用程序中创建和发布自动释放池. 例如,如果我有一个覆盖 init 的 ApplicationController 类,是否有一个自动释放池在它开始之前被创建并在它结束后被耗尽? 解决方案 AppKit 应用程序中的主线程运行 NSRunLoop 来处理事件.NSRunLoop 每次处理新事件(或计时器)时都会创建一个新的自动释放池,并在控制流返回
..
我经常看到类似以下内容: UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)];self.navigationItem.ri
..
寻求对“链接"到实例变量时 Objective-C 属性如何工作的一些说明.我的困惑源于如何通过 @synthesize 指令将属性设置为等于实例变量,例如... @synthesize someProp = _someIVar; 现在,如果我的 someProp 就像... @property (retain,readonly) SomeClass* someProp ...这会...
..
根据 Google Objective-C 样式指南,我们应该自动释放然后保留: - (void)setFoo:(GMFoo *)aFoo {[foo_ 自动释放];//如果 |foo_| 不会释放== |aFoo|foo_ = [aFoo 保留];} 在这种情况下,如果 foo_ 被设置为同一个实例,则不会被释放,从而形成一个更具防御性的 setter. 我的问题是,这是@proper
..
我有一个理解问题.给出了这个方法: - (NSArray*)test {NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://stackoverflow.com/"]];NSString *result = [[NSString alloc] initWithBytes:[数据字节]长度:[数据长度]
..
@interface foo:NSObject@属性(非原子,保留)NSMutableArray * aMutableArray;@结尾@执行@synthesize aMutableArray-(void)somefunction {//插图self.aMutableArray = [[[[NSMutableArray alloc] init] autorelease];self.aMutabl
..
我正在使用Objective-C,并且在使用ARC编译器编译代码时,我不知道如何创建和调用不带参数的方法. 这是我试图在非ARC Objective-C中完成的事情(无论如何这可能是错误的.) ////Dummy.m//OutParamTest#import" Dummy.h"@实现假人-(void)foo {NSString * a =零;[self barOutString:& a];
..
NSString *str = [[[[NSString alloc]init]autorelease]autorelease]; str = @"hii"; NSLog(@"%@",str); 任何人都可以帮我讲一下这段代码吗?自动释放对象两次,将发生什么情况.当我运行代码时,我没有任何僵尸.为什么会这样. 解决方案 在销毁自动释放池时,该对象被释放两次,这很可能在运行循
..
我正在阅读由坂本一树(Kazuki Sakamoto)编写的带有ARC,Grand Central Dispatch和Blocks的iOS和OS X Pro多线程和内存管理专业版. 这本书写道: 使用带有__weak限定词的变量时,该对象始终为 在autoreleasepool中注册. id __weak obj1 = obj0; NSLog(@"class=%@", [obj1
..
我对自动引用计数(ARC)中的autoreleasepool有疑问 在我的示例中(粘贴在下面),我有一个autoreleasepool,并且在autoreleasepool块中没有任何语句.在autoreleasepool块之后有一个自动发布的实例(a3). 预期行为: 我希望以下语句会导致内存泄漏,因为它没有封装在自动释放池中. A* a3 = b1.xa1; 实际行
..
我的项目使用ARC.我使用以下代码进行了测试: NSString __weak *string; @autoreleasepool { string = [NSString stringWithString:@"AAA"]; } NSLog(@"string: %@", string); 我认为它的输出为: string: (null) 但实际上输出:
..
我有一个像这样的方法: - (void)processAThing:(id)thing error:(NSError * __autoreleasing *)error { @autoreleasepool { // Start processing. // Find some partway through error..
..
我对ARC中的weak属性(自动引用计数)有疑问 我的理解(如果我做错了,请纠正我): weak属性的行为与assign属性类似,不同之处在于,当该属性指向的实例被销毁时,使ivar指向nil. 问题: 我只是觉得weak属性的getter会保留并自动释放.是不是应该像assign属性的getter那样工作,其中getter不会保留并自动释放?(请参阅程序) 程序:
..
任何人都可以告诉我,在批准开发人员处于待发布状态后,如何在新的iTunesConnect界面中设置特定的发布日期? 出于某种原因,我们的发布应该在现在的一个周末进行,因此将手动发布更改为日期会很不错.但是,现在该应用程序处于开发人员待发布状态,我无法再找到特定发布日期的选项. 解决方案 根据Apple 使用iTunes Connect设置应用程序在商店中可用的日期.例如,您可以选择
..
当我通过 返回CFDataRef时 (CFDataRef)MyFunction{ ..... CFDataRef data = CFDataCreate(NULL, buf, bufLen); free(buf); return data; } 内存泄漏,如何使CFDataRef自动释放? 方法[数据自动释放]不会退出. 解决方案 您无法自动释放Co
..