相关疑难解决方法(0)

为什么在Objective-C中,在单独的语句中执行alloc和init会导致根据Xcode静态分析器释放对象?

我正在使用Objective-C开始我的第一步,并且在XCode 4.1中遇到了一个轻微的问题,尽管是一个令人困惑的问题,即静态分析器(Product-> Analyze).我为有理数创建了一个简单的Fraction类,我分配并初始化为这样,

Fraction* f = [[[ Fraction alloc ] initWithNumerator:3 withDenomimator:5]
                                                               autorelease];
[ f print ];
Run Code Online (Sandbox Code Playgroud)

哪个printNSLog用于显示分数的方法,一切正常.但是,如果我将alloc/ initconstruct分成两个语句(我意识到这是非惯用的 - 我只是想了解机器)并使用手册release而不是autorelease给出:

Fraction* f = [ Fraction alloc ]; // 1. Method returns an Objective-C object with
                                  //    a +1 retain count (owning reference)
[ f initWithNumerator:3 withDenomimator:5]; // 2. Object released
[ f print ]; // 3. Reference-counted object is used after it is released
[ f release ]; …
Run Code Online (Sandbox Code Playgroud)

xcode memory-management objective-c

4
推荐指数
1
解决办法
1696
查看次数

标签 统计

memory-management ×1

objective-c ×1

xcode ×1