有一些方法可以测试一个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)
谢谢!!
在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)
我能以这种方式访问函数中的类的实例变量(在同一个类中声明)吗?
我试图弄清楚为什么在添加到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,但要么执行,要么在没有依赖的情况下添加都可以正常工作.有人知道为什么吗?
提前致谢.