标签: alloc

在C++中使用std :: allocator而不是new有什么好处?

我刚看过std::allocator.在我看来,使用它而不是使用new和更复杂delete.

随着allocator我们必须明确分配堆内存,构建它,消灭它,然后终于解除分配内存.那它为什么会被创造出来?

在哪些情况下可以使用它何时应该使用而不是新的和删除?

c++ heap alloc

63
推荐指数
7
解决办法
1万
查看次数

alloc和allocWithZone有什么区别:?

论坛讨论看,似乎最大的区别是性能因素,allocWithZone:将从特定的内存区域分配内存,从而降低交换成本.

在实践中,几乎没有机会使用allocWithZone:,任何人都可以给出一个简单的例子来说明使用allocWithZone的情况:

谢谢,

memory-management objective-c alloc

50
推荐指数
3
解决办法
2万
查看次数

在realloc()之前需要malloc()吗?

因为我读过realloc将作为malloc,如果指向的大小是0,我使用它没有malloc(),前提是指针是静态的,全局的,或者如果是自动的话显式设置为NULL.

但是,我注意到很多程序员试图设置它或将其设置为malloc(1).需要它吗?

c malloc memory-management alloc

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

Objective-C/iPhone开发中的懒惰实例化

快速问题......我明白所有属性在Objective-C中以nil开头,并且向nil发送消息不起作用,因此必须使用[[Class alloc] init]初始化; 在向新创建的属性发送消息之前.但是,如果我不向此属性发送消息或者如果我使用self.property = some设置属性呢?在这些情况下我是否还需要分配init?此外,UI属性也是以nil开头的,例如您从故事板中拖出的UILabel属性?这些需要alloc init吗?

感谢所有回答的人

initialization properties objective-c alloc lazy-initialization

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

Objective-C在swift类上请求alloc

一些小步骤开始围绕Swift缠头.我基本上移植了一个旧类,它只是找到一个名称的匹配图标并返回相应的UIImage.事情的Swift部分似乎正在运行,看起来(几乎)像这样:

@objc class ImageHandler{

    func iconForData(data: MyData) -> UIImage{
        let imagesAndNames = [
            "1": "tree.png",
            "2": "car.png",
            "3": "house.png",
            "7": "boat.png",
        ]

        var imageName: String? = imagesAndNames[data.imageName]
        if !imageName{
            imageName = "placeholder.png"
        }
        let icon = UIImage(named: imageName)
        return icon
    }
}
Run Code Online (Sandbox Code Playgroud)

上面没有任何警告.然而,我的旧Objective-C类要求在swift类上使用alloc方法.

ImageHandler *imageHandler = [ImageHandler alloc] init];
Run Code Online (Sandbox Code Playgroud)

返回错误"没有选择器'alloc'的已知类方法,我猜这是真的,但是如何逃避这个?我是否必须以我的swift-class NSObject为基础来避免这种情况?

objective-c alloc swift

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

为什么在Objective-C中单独调用alloc和init?

注意:我对Objective-C比较新,我来自Java和PHP.

有人可以向我解释为什么我总是要先分配然后初始化一个实例?

不能在这样的init方法中完成:

+ (MyClass*)init {
    MyClass *instance = [MyClass alloc];
    [instance setFoo:@"bla"];

    return instance;
}

+ (MyClass*)initWithString:(NSString*)text {
    MyClass *instance = [MyClass init];
    [instance setFoo:text];

    return instance;
}
...
Run Code Online (Sandbox Code Playgroud)

这只是旧C日的残骸还是有些东西我没有看到?

我知道这不是问题,因为我总是可以调用alloc和init,但由于它有点乏味,我想至少知道我为什么要这样做.

到目前为止,我喜欢语言的表达能力,但这是我想要完全理解的,以便考虑Objective-C的方式.

谢谢!

oop cocoa objective-c init alloc

15
推荐指数
5
解决办法
6402
查看次数

如何释放静态Objective-C变量

所述的StackOverflow问题"其定义一个缓存变量时使用静态关键字在目标c"的引用从实施例4 Xcode的TableViewSuite的代码限定static NSDateFormatter和呼叫alloc但永远不会调用release.

static应该发布变量吗?如果是,代码应该在何处发布?如果不是,为什么不呢?

static release objective-c alloc

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

初始化时是否需要调用pointer = NULL?

当我创建指向某个结构的指针时,我是否必须将其设置为NULL,然后分配它然后使用它?为什么?

c pointers alloc

12
推荐指数
3
解决办法
2万
查看次数

自动引用计数问题:将保留对象分配给unsafe_unretained变量; 对象将在分配后释放

我收到了这个警告

"自动引用计数问题:将保留对象分配给unsafe_unretained变量;对象将在分配后释放"

这是代码

.H

@interface myObject : NSObject
{
}

@property (assign) id progressEnergy;

@end
Run Code Online (Sandbox Code Playgroud)

.M

@implementation myObject

@synthesize progressEnergy;

-(id)init
{
    if ( ( self = [super init] ) )
    {
        progressEnergy = [[progress alloc] init]; //warning appear on this line
    }

    return self;
}

@end
Run Code Online (Sandbox Code Playgroud)

我已经尝试过了

@property (assign) progress* progressEnergy;
Run Code Online (Sandbox Code Playgroud)

但没有运气

你能帮我弄清楚出了什么问题吗?

object objective-c alloc automatic-ref-counting

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

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