超类的粗略轮廓:
/* Genericclass.h */@interface Genericclass : NSObject { /* some variables */}@end/* Genericclass.m */@implementation Genericclass /* ... */@end
子类概述:
/* Specificclass.h */#import "Genericclass.h"@interface Specificclass : Genericclass { NSMutableString *str;}/* Specificclass.m */#import "Specificclass.h"@implementation Specificclass- (voID)aMethod { //DeBUGger reports str as out of scope str = [[NSMutableString alloc] initWithCapacity:100]; //Works fine: self->str = [[NSMutableString alloc] initWithCapacity:100]; //Doesn't compile as I haven't defined @property/@synthesize: self.str = [[NSMutableString alloc] initWithCapacity:100];}
当我使用直接从NSObject继承的类时,不需要自我>指针.请注意,父Genericclass中没有定义名称为str的对象.
所以,我的问题是,为什么在未被引用为self-> str时超出范围?代码本身可以工作,但我无法使用调试器读取变量
在Objective-C中,每个方法在调用时都会传递一个隐式自参数.因此,当你看看自我> str时,GDB正在解释它会解释任何其他局部变量评估.
当你试图自己评估str时,GDB将寻找一个名为str的局部变量,而不是找到一个,报告它不在范围内.这不是错误;这是预期的行为.
总结以上是内存溢出为你收集整理的Objective-C:调试器中范围超出范围的实例变量全部内容,希望文章能够帮你解决Objective-C:调试器中范围超出范围的实例变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)