草庐IT

ARC下AutoReleasePool的误区

全部标签

iphone - 使用 ARC 并针对 iOS 4.0 时如何替换弱引用?

我已经开始使用Xcode4.2开发我的第一个iOS应用程序,目标是使用“实用程序”模板(带有FlipsideViewController的模板)的iOS5.0。我读到,由于ARC是一个编译时功能,它也应该与iOS4兼容,所以我尝试将我的应用程序定位到4.3,并尝试编译它。当我这样做时,我收到此错误:FlipsideViewController.m:错误:自动引用计数问题:当前部署目标不支持自动__weak引用它引用了这一行:@synthesizedelegate=_delegate;该变量声明为:@property(weak,nonatomic)IBOutletiddelegate;我

ios - 没有 Storyboard和 ARC 的 Xcode

我已经下载了新的xcode-5并且刚刚开始使用它。我们可以直接创建包含Storyboard和ARC的应用程序,它不像早期版本那样要求选项。所以,我的问题是我们如何在没有ARC和Storyboard的情况下使用xcode5。我们必须手动删除Storyboard文件吗?还是有其他选择。 最佳答案 创建一个带有空应用程序的项目并添加任何ViewController(我在此处添加了TestViewController)-(BOOL)application:(UIApplication*)applicationdidFinishLaunchi

带有ARC的iOS APP没有泄漏但事件字节增加

非常感谢@HotLicks的帮助,他指出了我的sqlite3代码有什么问题。我修改了代码,按sqlite3增加的事件字节消失了。对于其他新的ios开发者也可能会遇到这个问题,我把原来的问题留在后面。我的新问题是:在instruments的每一代之间仍然有一些增加的活字节,但似乎所有的对象都是由iosSDK的代码组成的,而不是我的代码。那么,我是否应该不理会增长,而不必担心呢?@HotLicks说我操作UI的方式可能有问题,所以我详细描述一下:1)我在Xcode5中为ipad创建了一个主细节应用;2)将master嵌入到Tabbarcontroller中,并添加一个新的tab,因此mas

objective-c - Swift 与 ARC 之前的 Objective-C 不兼容吗?

我开始将Swift文件添加到一个不使用ARC的非常大的遗留Objective-C项目。当我编译项目时,我会收到针对ProjectName-Swift.h桥头文件中发出的每个属性的警告:未指定“分配”、“保留”或“复制”属性-假定为“分配”默认属性“assign”不适用于非GC对象看起来Swift正在发布基于ARC的Objective-C代码。这是这个特定版本的Swift中的限制/错误,还是Swift设计为仅适用于ARC代码? 最佳答案 您可以混合使用ARC和非ARC代码。所有ARC编译代码所做的就是自动为用户管理其内存。您应该为项目

ios - Swift:CGPathRelease 和 ARC

刚更新到XcodeBeta4,发现我的代码出现以下编译器错误:varpath=CGPathCreateMutable()...CGPathRelease(path)'CGPathRelease'isunavailable:CoreFoundationobjectsareautomaticallymemorymanaged那么我是否只是简单地删除我的发布调用,一切都应该没问题?或者还有什么我想念的吗?对于ARC,有什么我应该注意的特殊情况吗? 最佳答案 WorkingwithCocoaDataTypesUsingSwiftwithCo

ios - arc4random (mac os x) 有多随机? (或者我做错了什么?)

我正在玩swift/mac_os_x中优化的生命游戏实现。第一步:随机化一个大的细胞网格(50%存活)。代码:for(vari=0;ir)self.setState(alive,cell:Cell(tup:(i,j)),cells:aliveCells)}}我希望有一个相对统一的随机性。我得到的有一定的模式:在左下方放大一点:(我已将每32行和每列的颜色更改为黑色,以查看图案是否与2的任意幂对齐)。知道是什么导致了这些模式吗?我试过:用rand()替换arc4random。在每个arc4random_uniform调用之前添加arc4stir()移动显示(以确保模式在数据中,而不是显示

ios - ARC 中的引用计数

我对ARC的引用计数有点困惑,你能告诉我波纹管代码的引用计数是多少吗?varvc1=UIViewController()varvc2=vc1varvc3=vc2weakvarvc4=vc3问题是:vc1的引用计数?vc2的引用计数?vc3的引用计数?vc4的引用计数? 最佳答案 这里,vc1、vc2、vc3指的是同一个对象。所以,那个对象的引用计数是3。当vc4引用同一个对象时,由于是弱引用,引用计数不会加1。所以,这之后的引用计数会也是3第一行代码后vc1创建并引用的UIViewController对象的引用计数为1。varvc1

random - 将 arc4random() 的结果转换为 Int 时崩溃

我写了一个简单的Bag类。一个袋子里装满了固定比例的温度枚举。它允许您随机抓取一个,并在空时自动重新装满。它看起来像这样:classBag{varitems=Temperature[]()init(){refill()}funcgrab()->Temperature{ifitems.isEmpty{refill()}vari=Int(arc4random())%items.countreturnitems.removeAtIndex(i)}funcrefill(){items.append(.Normal)items.append(.Hot)items.append(.Hot)item

memory-management - 在 Swift 程序中有必要使用 autoreleasepool 吗?

在thisWWDC14presentation的第17页上,它说WorkingwithObjective-C?Stillhavetomanageautoreleasepoolsautoreleasepool{/*code*/}这是什么意思?这是否意味着如果我的代码库没有任何Objective-C文件,则不需要autoreleasepool{}?在ananswerofarelatedquestion,有一个autoreleasepool有用的例子:-(void)useALoadOfNumbers{for(intj=0;j如果将上面的代码翻译成Swift并删除autoreleasepool

range - 如何在 arc4random_uniform() 的范围内生成随机数?

所以我在此代码位中的目标是随机掷两个骰子,众所周知,您的常规骰子只有6个面,因此我导入了Foundation以访问arc4random_uniform(UInt32)。我尝试使用(1..7)的范围来避免随机获得0但是返回了一个我不太喜欢的错误。我试着这样做:dice1=arc4random_uniform(UInt32(1..7))然而返回Couldnotfindanoverloadfor'init'thatacceptsthesuppliedarguments我希望这些信息足以让你们这些了不起的人帮助我:)请注意,我只是在Playground上这样做以练习swift。我不必学习如何做