小编jlp*_*ita的帖子

Objective-C - 测试被解除分配/释放的对象实例

有一些方法可以测试一个objective-c实例被解除分配/释放(保留计数== 0)?

例如,对象A有一个对象B的引用(指针),但是对象B可以在内存中释放低级别,我如何测试引用B以确保它被解除分配?

@interface A : NSObject {
    B b;
}

@implementation A {

- (void) someAction:(id) sender {
    //is b previously dealloced?? 
    if ..... ???? {
        b = [[B alloc] init];
    }
    // continue
}
}
Run Code Online (Sandbox Code Playgroud)

谢谢!!

cocoa cocoa-touch objective-c

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

Obj-C:在@implementation块内部或外部声明的C函数,有什么区别?

在Objective-C类的实现块(@implementation ... @end)内部或外部声明的C函数(静态或非静态)之间的区别是什么?

这是特别真实的吗?:

如果需要直接在对象内部进行戳,可以将此函数放在类的@implementation块中,然后可以使用C箭头运算符访问实例变量.但这有点顽皮,所以为了保持你的精华纯度,你应该在对象上使用方法调用.结束讲道.这是邪恶的:

@implementation OblateSphereoid

void drawEggThunk (DrawingContext *context, Rect areaToDraw, void *userData)
{
BWOblateSphereoid *dealie = (BWOblateSphereoid *)userData;
dealie->_frognatz = [NSColor plaidColor];
// and more stuff.
} // drawEggThunk

...
@end // OblateSphereoid
Run Code Online (Sandbox Code Playgroud)

我能以这种方式访问​​函数中的类的实例变量(在同一个类中声明)吗?

c cocoa-touch objective-c

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

NSOperation在添加到NSOperationQueue时没有执行依赖项

我试图弄清楚为什么在添加到NSOperationQueue(iOS5,ARC)时没有执行具有依赖关系的NSOperation:

@implementation NSOperationTest {
    NSOperationQueue *_operationQueue;
}

- (id)init {
    self = [super init];
    if (self) {
        _operationQueue = [[NSOperationQueue alloc] init];
    }
    return self;
}

-(void) test
{
    NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"op1 running");
    }];

    NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"op2 running");
    }];

    [op2 addDependency:op1];
    [_operationQueue addOperation:op2];
}
@end
Run Code Online (Sandbox Code Playgroud)

这让我抓狂,这里op1应该先执行op2,但要么执行,要么在没有依赖的情况下添加都可以正常工作.有人知道为什么吗?

提前致谢.

iphone cocoa-touch nsoperation nsoperationqueue ios5

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