gpt4 book ai didi

iphone - 使用自定义 NSObject 类来简化 iPhone 应用程序中的重复代码时遇到问题

转载 作者:行者123 更新时间:2023-11-28 20:43:37 27 4
gpt4 key购买 nike

我试图将 REST 连接模型存储在单个对象中,这样我就不必一遍又一遍地使用它。这是我创建的模型:

//RestModel.h
#import "ASIHTTPRequest.h"

@interface RestModel : NSObject{
NSString* _baseUrl;
NSString* _modelUrl;
}

@property (nonatomic, retain) NSString* modelUrl;

- (id)initWithModel:(NSString*)model;
- (NSDictionary*)getById:(NSInteger*)ident;
- (NSDictionary*)getAll;

@end

//RestModel.m
#import "RestModel.h"

@implementation RestModel

@synthesize modelUrl = _modelUrl;

- (id)init
{
self = [super init];
if (self) {
_baseUrl = @"http://myRESTurl.com";
}

return self;
}

- (id)initWithModel:(NSString*)model
{
self = [super init];
if (self) {
_baseUrl = @"http://myRESTurl.com";
self.modelUrl = [NSString stringWithFormat:@"%@/%@/", _baseUrl, model];
}

return self;
}

- (NSDictionary*)HTTPRequest:(NSURL*)url
{
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if(!error){
NSData *responseData = [request responseData];
NSString *errorDesc = nil;
NSPropertyListFormat format;

[error release];
[request release];

return (NSDictionary*)[NSPropertyListSerialization propertyListFromData:responseData mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
}else{
NSLog(@"%@", error);
return nil;
}
}

- (NSDictionary*)getById:(NSInteger*)ident
{
NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"%@/%@", self.modelUrl, ident]];
return [self HTTPRequest:url];
}

- (NSDictionary*)getAll
{
NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"%@", self.modelUrl]];
return [self HTTPRequest:url];
}

- (void)dealloc
{
[_modelUrl release];
// [_responseData release];
// [_responseDict release];
[super dealloc];
}

@end

编辑:现在它没有崩溃,但我的本地 NSDictionary 计数为 0。我在我的 Controller 中的 -viewDidLoad 中调用以下内容:

RestModel* rm = [[RestModel alloc] initWithModel:@"user"];
self.dict = [rm getAll];
[rm release];

我在整个 Controller 中植入了 [self.dict count] 的 NSLog。它始终为 0。调用 RestModel rm,调用函数(再次调用更多 NSLogs),但没有数据。有什么想法吗?

最佳答案

    [error release]; 
[request release];

那些应该是自动释放的对象,因为您是通过方便的方法获得它们的,因此显式释放它们会使您的应用程序崩溃。

关于iphone - 使用自定义 NSObject 类来简化 iPhone 应用程序中的重复代码时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7390875/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com