AppCommons.h
#import <Foundation/Foundation.h>
#import <StoreKit/StoreKit.h>
@interface AppCommons : NSObject <SKProductsRequestDelegate,SKRequestDelegate>
- (void) getInAppPrice : (NSString *) inAppIdentifier;
@end
AppCommons.m
#import "Config.h"
#import "AppCommons.h"
#import "AppDelegate.h"
#import "ASIHTTPRequest.h"
#import "ASIFormDataRequest.h"
@implementation AppCommons
SKProductsRequest *productsRequest;
- (void) getInAppPrice : (NSString *) inAppIdentifier {
NSSet *productIdentifiers = [NSSet setWithObject:inAppIdentifier ];
productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
productsRequest.delegate = self;
[productsRequest start];
// we will release the request object in the delegate callback
}
#pragma mark -
#pragma mark SKProductsRequestDelegate methods
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
for(SKProduct *product in response.products)
{
NSLog(@"Product Price : %@",product.price);
NSLog(@"Product Price Locale : %@",product.priceLocale);
}
}
@end
这是我的类,用于获取应用内购买的费用。我正在使用以下行从另一个类调用 getInAppPrice 方法
AppCommons *appCommon = [[AppCommons alloc] init];
[appCommon getInAppPrice:inAppProductIdentifier];
收到响应后出现以下错误
"* -[AppCommons respondsToSelector:]: 发送到释放实例 0xd4f0580 的消息
请帮忙..谢谢。
最佳答案
我怀疑你是在一个方法的范围内这样做的,就像这样:
- (void)myMethod {
AppCommons *appCommon = [[AppCommons alloc] init];
[appCommon getInAppPrice:inAppProductIdentifier];
}
这意味着 appCommon
将在方法返回时被销毁。
而是创建一个实例变量或属性,以便 AppCommons
对象的生命周期超过此方法调用。
我的类.h:
@class AppCommons;
@interface MyClass : NSObject {
AppCommons *_appCommons;
}
...
@end
我的类.m:
#import "MyClass.h"
#import "AppCommons.h"
@implementation MyClass
- (id)init {
self = [super init];
if (self) {
_appCommons = [[AppCommons alloc] init];
}
return self;
}
- (void)myMethod {
[_appCommons getInAppPrice:inAppProductIdentifier];
}
@end
关于ios - [AppCommons respondsToSelector :]: message sent to deallocated instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21384592/