MECL Paypal转换为ARC(IOS)

时间:2012-06-17 22:07:14

标签: ios paypal automatic-ref-counting

我目前正在尝试将Paypal的MECL与已经存在的使用ARC的IOS项目集成。

我相信通过手动删除代码中的所有释放/保留应该使它与ARC兼容。

只有一个声明我不知道如何转换:“InitAndDealloc”可以在几个类中找到,例如:

static NSString *SolutionTypeStrings[] = {@"Sole", @"Mark"};
static NSString *LandingPageTypeStrings[] = {@"LandingPage", @"Billing", @"Login"};
static NSString *ChannelTypeStrings[] = {@"Merchant", @"eBayItem"};

#define LOCALE_CODE @"LocaleCode"

@implementation SetExpressCheckoutRequestDetails

InitAndDealloc

StringAccessor(ReturnURL)
StringAccessor(CancelURL)
StringAccessor1(cppHeaderImage, @"cpp-header-image")
StringAccessor1(cppHeaderBorderColor, @"cpp-header-border-color")
StringAccessor1(cppHeaderBackColor, @"cpp-header-back-color")
StringAccessor1(cppPayflowColor, @"cpp-payflow-color")
IntAccessor(AllowNote)
IntAccessor(ReqConfirmShipping)
TypedefAccessor(NoShipping, NoShippingType)
StringAccessor(Token)
AmountAccessor(MaxAmount)
StringAccessor(CallbackURL)
IntAccessor(CallbackTimeout)
GenericAccessor1(FlatRateShippingOptions, ShippingOptions)
IntAccessor(AddressOverride)
StringAccessor(PageStyle)
StringAccessor(BuyerEmail)
StringAccessor(giropaySuccessURL)
StringAccessor(giropayCancelURL)
StringAccessor(BanktxnPendingURL)
GenericAccessor(EnhancedCheckoutData)
GenericAccessor(BuyerDetails)
StringAccessor(BrandName)
GenericAccessor(FundingSourceDetails)
StringAccessor(CustomerServiceNumber)
IntAccessor(GiftMessageEnable)
IntAccessor(GiftReceiptEnable)
IntAccessor(GiftWrapEnable)
StringAccessor(GiftWrapName)
AmountAccessor(GiftWrapAmount)
IntAccessor(BuyerEmailOptinEnable)
StringAccessor(SurveyQuestion)
StringAccessor(CallbackVersion)
IntAccessor(SurveyEnable)
MutableArrayAccessor(PaymentDetails)
MutableArrayAccessor(BillingAgreementDetails)
MutableArrayAccessor1(OtherPaymentMethods, OtherPaymentMethodDetails)
MutableArrayAccessor1(SurveyChoice, NSString)
EnumAccessor(SolutionType, SolutionType)
EnumAccessor(LandingPage, LandingPageType);
EnumAccessor(ChannelType, ChannelType);

如果我删除“InitAndDealloc”行,似乎我不能再在类中设置变量了。实际上,我还有工作(非ARC)贝宝演示。

通过这样做:

SetExpressCheckoutRequestDetails *sreq = [[SetExpressCheckoutRequestDetails alloc] init];
sreq.ReturnURL = @"Bob";
NSLog(@"%@  ", sreq.ReturnURL );

在这两个项目中。 我的将返回null,paypal将返回Bob。

它甚至与“InitAndDealloc”有什么关系,还是我看错了?如果是如何在ARC项目中替换“InitAndDealloc”?我似乎无法通过自动完成找到一个简单的“Init”,并通过Google搜索“InitAndDealloc”,我绝对没有任何结果:/

感谢阅读!

1 个答案:

答案 0 :(得分:1)

我之前从未使用过MECL,但它被称为“InitAndDealloc”的方式当然不是目标C,因此不会遵循ARC对Objective C所要求的相同规则。把它留在原地而不是试图用它来挣扎。

但无论如何,而不是努力尝试ARC - 使一些已发表的&可能有问题的SDK代码,为什么不为ESTL文件关闭ARC

Here is a related question,介绍如何为单个文件关闭ARC。