【问题标题】:MECL Paypal convert to ARC (IOS)MECL Paypal 转换为 ARC (IOS)
【发布时间】:2012-06-17 22:07:13
【问题描述】:

我目前正在尝试使用 ARC 将 Paypal 的 MECL 集成到现有的 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”,通过谷歌搜索“InitAndDealloc”我绝对没有得到任何结果:/

感谢阅读!

【问题讨论】:

    标签: ios paypal automatic-ref-counting


    【解决方案1】:

    我以前从未使用过 MECL,但它被称为“InitAndDealloc”的方式肯定 不是Objective C,因此不会受到 ARC 对 Objective C 要求的相同规则的约束。最好把它留在原地,而不是试图解决它或与之抗争。

    但无论如何,与其努力尝试为某些已发布且可能存在问题的 SDK 代码启用 ARC,不如为 MECL 文件关闭 ARC

    Here is a related question 描述了如何为单个文件关闭 ARC。

    【讨论】:

      猜你喜欢
      • 2012-11-29
      • 2023-03-12
      • 2012-01-23
      • 2012-11-07
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      相关资源
      最近更新 更多