相关疑难解决方法(0)

我发布了多少次分配或保留的对象?

我正在制作iPhone游戏.我想释放已分配或保留的所有对象.在dealloc我发布所有这些对象的函数中,但后来我意识到有时候我还没有分配对象时最终释放对象.所以我想retainCount在发布它之前我需要检查它是否大于零.

我的问题是:

我只是检查是否retainCount大于零,然后释放它?

if([bg retainCount]!=0)
{
  [bg release];
}
Run Code Online (Sandbox Code Playgroud)

要么

我应该多次发布它 retainCount

while([bg retainCount]!=0)
{
  [bg release];
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

iphone memory-management retain cocos2d-iphone retaincount

6
推荐指数
1
解决办法
3646
查看次数

retainCount显示MaxInt

在尝试打印retainCount对象后,我得到2147483647.为什么我得到这样的结果?它应该是1,不应该?

NSString *myStr = [NSString new];
NSUInteger retCount = [myStr retainCount];
NSLog(@"refCount = %u", retCount);
Run Code Online (Sandbox Code Playgroud)

2011-09-08 17:59:18.759测试[51972:207] refCount = 2147483647

我使用XCode版本4.1.尝试编译器GCC 4.2和LLVM GCC 4.2 - 相同的结果.垃圾收集选项设置为不受支持.

iphone objective-c ios xcode4

6
推荐指数
2
解决办法
804
查看次数

为什么在[对象发布]之后retainCount仍为1?

NSLog(@"first:%u",[object retainCount]);
[object release];
NSLog(@"second:%u",[object retainCount]);
Run Code Online (Sandbox Code Playgroud)

输出:

first:1
second:1

为什么对象不会被释放?

iphone objective-c

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

为什么NSString保留计数2?

#define kTestingURL @"192.168.42.179"

...

NSString *serverUrl = [[NSString alloc] initWithString:
                        [NSString stringWithFormat:@"http://%@", kTestingURL]]; 
NSLog(@"retain count: %d",[serverUrl retainCount]);
Run Code Online (Sandbox Code Playgroud)

为什么保留计数为2而不是1?

iphone cocoa-touch objective-c nsstring

4
推荐指数
2
解决办法
882
查看次数

为什么将计数保留在负值?

可能重复:
NSString保留Count

是否有可能任何对象的保留计数为负值?

我有这个代码

NSString *str = [[NSString alloc] initWithString:@"Hello World"];
NSLog(@"String Retain Count: %i", [str retainCount]);
Run Code Online (Sandbox Code Playgroud)

这将返回保留计数 -1.

为什么会这样?

我也是这样做的

NSString *str = [[NSString alloc] init]
Run Code Online (Sandbox Code Playgroud)

仍然是保留计数中的返回负值.

这是怎么回事?

请帮忙了解这件事!!!!!

iphone memory-management objective-c ios retaincount

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

一个alloc,retainCount == 2

我有以下代码:

NSLog(@"%d", [chart retainCount]);

self.chart = [[BNPieChart alloc] initWithFrame:self.view.frame];
NSLog(@"%d", [chart retainCount]);
Run Code Online (Sandbox Code Playgroud)

终端显示:

[Session started at 2011-03-28 11:09:46 +0200.]
2011-03-28 11:09:51.008 Finance[35111:207] 0

2011-03-28 11:09:51.010 Finance[35111:207] 2
Run Code Online (Sandbox Code Playgroud)

据我所知,retainCount应该等于1,而不是2.

iphone memory-management

3
推荐指数
1
解决办法
1138
查看次数

如何在Objective-C中运行代码片段

在尝试从书中学习Objective C时,我希望能够运行一些代码片段,如...

NSString *str = @"Hello, world!";
NSLog(@"Retain count is %d", [str retainCount]);
Run Code Online (Sandbox Code Playgroud)

在Ruby中我只是把它放在一个snippet.rb文件中并ruby snippet.rb从终端运行.JavaScript有jsfiddle.net.使用目标c有同样简单的方法吗?

objective-c

3
推荐指数
1
解决办法
371
查看次数

尽管故意过度释放,但物体的保留计数从未低于1

我正在检查一些对象的保留计数

NSLog(@"r = %d", [aObject retainCount];
Run Code Online (Sandbox Code Playgroud)

似乎我能得到的最低值是"r = 1",即使我故意添加额外的"释放"调用

[aObject release];
Run Code Online (Sandbox Code Playgroud)

即使我尝试将"释放"和"NSLog"测试代码放在对象的dealloc 方法中,"r = 1"限制仍然 有效.

Cocoa运行时似乎忽略了我的额外版本,直到"r = 1",然后在示例程序的最后使用"EXC_BAD_ACCESS"崩溃(没有GC).

我唯一的解释(猜测)是我们需要r> = 1来访问对象.并且Cocoa运行时只是试图避免让任何对象的保留计数过早地变为0.

如果我错了,有人可以确认或纠正我吗?

cocoa memory-management objective-c retaincount

2
推荐指数
2
解决办法
630
查看次数

使用retainCount的奇怪行为

当我使用NSArrayNSString对象记录保留计数时,我的行为不均匀. 请参阅下面的代码,

NSArray *aryTemp = [NSArray arrayWithObjects:@"One",nil];
NSLog(@"Retain Count :%d",[aryTemp retainCount]);

NSArray *aryTemp2 = [[NSArray alloc] initWithObjects:@"One",nil];
NSLog(@"Retain Count :%d",[aryTemp2 retainCount]);

NSString *strTemp = @"One";
NSLog(@"Retain Count :%d",[strTemp retainCount]);

NSString *strTemp2 = [[NSString alloc] initWithString:@"One"];
NSLog(@"Retain Count :%d",[strTemp2 retainCount]);
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出

2011-03-01 19:19:32.410 Test[14607:207] Retain Count :37
2011-03-01 19:19:32.412 Test[14607:207] Retain Count :1
2011-03-01 19:19:32.413 Test[14607:207] Retain Count :2147483647
2011-03-01 19:19:32.413 Test[14607:207] Retain Count :2147483647
Run Code Online (Sandbox Code Playgroud)

代码有什么问题?

谢谢

Pratik Goswami

iphone objective-c retaincount

2
推荐指数
2
解决办法
623
查看次数

NSString retainCount是2147483647

可能重复:
NSString保留计数
目标C NSString*属性保留计数
奇数何时使用-retainCount?

为什么此代码显示保留值大于1?为什么它是2147483647?

NSString *data22 = [[NSString alloc] initWithString:@"fsdfsfsdf"];

int a = [data22 retainCount];
NSLog(@"retain count 1== %d  ====" ,a);
Run Code Online (Sandbox Code Playgroud)

上面代码的输出是

 retain count 1== 2147483647  ====
Run Code Online (Sandbox Code Playgroud)

iphone xcode objective-c

2
推荐指数
1
解决办法
1279
查看次数