标签: retain

您能否向NSLog发送保留计数以帮助学习?

只是好奇是否仍然使用NSLog显示对象保留计数.我只想将它们打印到控制台,以帮助了解保留/释放如何在一些简单的代码中工作?

干杯 - 加里 -

memory nslog retain

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

使用alloc/retain/release的可能方案?

我已经使用ojective近一个星期了,我主要是一个c ++编码器.在我阅读了Apple的内存管理指南之后,我尝试将c ++中的内存使用方式带入目标c ...我试图总结这些场景,我想如果我遵循这些说明,我不会犯错误.如果我错了,请告诉我:)

我将尝试不使用自动释放,个人来说,通过使用自动释放,在某个自动释放池耗尽之前可能总会有一些冗余内存.我只会使用release,这可以确保我的应用程序随时使用最少的内存.

用我自己的话说,苹果说的另一件事是:每次我添加一个retain/alloc/copy,我都应该添加一个版本某处.

以下是我总结的所有场景:

  1. 在同一个函数中:分配一个对象,使用它并释放

  2. 在类的init函数中,在类的dealloc函数中分配一个对象,释放该对象

  3. 当需要拥有一个指针时,应该在类的方法中保留一个输入指针(比如方法A),然后在类的dealloc函数中释放指针.

    我发现在目标c 中使用retain的时间与在c/c ++ 中使用memcpy的时间相同,所以我将retain作为"内存有效副本"

    如果输入保留指针要设置为成员指针变量,则应首先释放成员指针.因此,在情况下[3],ALLOC初始化类的配对与释放方法A,而保留方法A配对与释放的dealloc

  4. 返回指针作为返回值.老实说,当我使用c ++时,我从未做过这样的事情.如果要返回一个成员指针就可以了,因为有人会照顾它:

    -(UIButton*) getTheButton() {
        return theButton;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    但是返回指向本地分配对象的指针真的很糟糕:

    -(UIButton*) getTheButton() {
        UIButton* myButton = [[UIButton alloc] init];
        return myButton; //TERRIBLE!
    } …
    Run Code Online (Sandbox Code Playgroud)

memory-management objective-c retain

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

为什么需要保留NSString变量?

我的.h文件中有以下代码:

@interface Utils : NSObject {
    NSString *dPath;
}    
@property(nonatomic, retain) NSString *dPath;
Run Code Online (Sandbox Code Playgroud)

在我的.m文件中:

    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
dPath = [[documentPaths objectAtIndex:0] stringByAppendingPathComponent:kDatabaseName];
[dPath retain]; 
Run Code Online (Sandbox Code Playgroud)

如果dPath已经定义为(非原子,保留),为什么还要保留 dPath?如果我不添加[dPath retain]; 我得到一些奇怪的,随机的错误,并且在其他函数中使用此变量时应用程序崩溃.我想这是因为某些自动释放,但我没有.

那么,什么是(非原子的,保留)做什么呢?是否真的有必要[dPath保留]; 或者我只是隐藏其他东西?

iphone objective-c autorelease nsstring retain

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

保留Count NSArray与NSMutableArray

使用代码示例的简短问题:

NSLog(@"%i", [[[NSArray alloc] init] retainCount]);
NSLog(@"%i", [[[NSMutableArray alloc] init] retainCount]);
Run Code Online (Sandbox Code Playgroud)

输出:

2
1
Run Code Online (Sandbox Code Playgroud)

为什么NSArray和NSMutableArray中的retainCount不同?

memory iphone retain ios

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

在街区内自我保留?

在调用块之前/之后,retaincount始终是1.从apple block doc我们知道self应该保留.谁能知道为什么?

NSLog(@"Before block retain count: %d", [self retainCount]);    
void (^block)(void) = ^(void){
    UIImage* img = [UIImage imageNamed:@"hometown.png"];
    [self setImage:img];
    NSLog(@"After block retain count: %d", [self retainCount]);
};
block();
Run Code Online (Sandbox Code Playgroud)

block objective-c self retain ios

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

以sas数据集 - 字母顺序重新排列变量

我有500列数据集,我想按字母顺序重新排列所有变量.除了在set语句之前使用retain语句之外,我该怎么做呢?

sas retain

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

不保留其值的静态变量

我想写一个函数minimum来返回在调用之间发送给它的最小值.该函数可以接收任意数量的参数,所有参数都是0到100范围内的整数.发送给函数的参数列表的结尾用-1表示.

例如,如果我输入以下呼叫main:

minimum (90,78,5,20,-1);
minimum (70,40,2,-1);
minimum(40,30,-1);
Run Code Online (Sandbox Code Playgroud)

第一个呼叫将返回5,因为最小值90,78,5,20为5.第二个呼叫将返回2,因为最小值5,70,40,2为2第三个呼叫将返回2,因为最小值2,40,30的值是2.

因此,该函数minimum返回到目前为止发生的所有调用中发送给它的最小数字.

所以我创建了一个静态变量,调用它min来保留函数调用之间的最小值.

这是我得到的:

#include <stdio.h>
#include <stdarg.h>

int minimum(int cnt, ...)
{
   static int min;
   int cur_min,i;
   va_list lst;

   va_start(lst,cnt);
   cur_min = va_arg(lst,int);
   min = cur_min;

 printf("min is %d and cur min is %d \n", min, cur_min);
    for(i=0; i<cnt; i++)
    {
        if(cur_min != -1)
        {
            if(cur_min < min)
            {
                min = cur_min;
            }
           cur_min = va_arg(lst,int);
           printf("min is %d and cur min is %d \n" , …
Run Code Online (Sandbox Code Playgroud)

c variables static minimum retain

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

如何在javascript中保留数组?

这里有一些代码有两个数组(np和op),一个是另一个的副本

但是,当我修改副本时,原件也被修改了!看一看:

<script type="text/javascript">
var op=new Array(0, 0);
var np=op;
np[1]=2;
document.write(op+"<br>")
document.write(np)
</script>
Run Code Online (Sandbox Code Playgroud)

有没有办法保留原件并修改副本?

javascript arrays retain

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

Objective-C保留计数澄清

我有点理解保留的重要性.但并非如此.我看了很多谷歌试图理解,但我仍然没有.

现在我在一些代码(我正在进行iPhone开发),我认为我应该使用它们但不完全知道如何.

有人能给我一个快速而好的例子,说明如何以及为何使用它们?

谢谢!

cocoa objective-c retain

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

@property(readonly,retain)有意义吗?

XCode接受它.但是当我在内部设置属性时会保留应用(自从readonly以来没有setter,但是当我在类方法中初始化值时)?

此致,Apple92

properties objective-c readonly retain

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