【问题标题】:iOS description method not callediOS 描述方法未调用
【发布时间】:2014-03-05 16:23:07
【问题描述】:

我已经覆盖了我创建的对象的描述方法,非常简单。此对象是NSMutableURLRequest 的子类。

- (NSString *)description
{
    return [[NSString alloc] initWithData:self.HTTPBody encoding:NSUTF8StringEncoding];
}

我还将- (NSString *)description; 放在.h 中

但是当我NSLog对象时它不会被调用。它不是NSManagedObject。如果我只调用myObject.description;,即使调试器也不会进入“描述”。我在我的对象实例上精确调用该方法,而不仅仅是NSMutableURLRequest

编辑: 我像这样实例化对象:

MYRequest *myRequest = [MYRequest requestWithFilter:myFilter];

NSLog(@"%@", myRequest);

这里是工厂方法:

@interface MYRequest : NSMutableURLRequest
+ (instancetype)requestWithFilter:(NSString *)filter;


@implementation MYRequest
+ (instancetype)requestWithFilter:(NSString *)filter
{
    // some config
    MYRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:15];
    // some more config
    return request;
}

什么鬼?

【问题讨论】:

  • NSMutableURLRequestNSURLRequest 类没有声明 - (NSString *)description 方法。您正在访问NSObject 的方法- (NSString *)description。见this
  • 显示实例化对象的代码。
  • 正如凯文在他的回答中所说,您正在实例化 NSMutableURLRequest,而不是您的子类。
  • @Jasarien 哦,是的,显然,明白了!谢谢

标签: ios cocoa-touch cocoa


【解决方案1】:

你没有你的子类的实例,你只有一个普通的NSMutableURLRequest

【讨论】:

    【解决方案2】:

    NSMutableURLRequestNSURLRequest 类没有声明 - (NSString *)description 方法。

    你正在访问NSObject的方法- (NSString *)description

    this

    您应该在您的自定义类中声明您自己的 description 方法并调用它:

    NSString *myObjectDescription = [myCustomObject description];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      相关资源
      最近更新 更多