第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

目標(biāo)-C:類別中的屬性/實(shí)例變量

目標(biāo)-C:類別中的屬性/實(shí)例變量

jeck貓 2019-07-22 16:38:18
目標(biāo)-C:類別中的屬性/實(shí)例變量由于無法在Object-C中的類別中創(chuàng)建合成屬性,因此我不知道如何優(yōu)化以下代碼:@interface MyClass (Variant)@property (nonatomic, strong) NSString *test;@end@implementation MyClass (Variant)@dynamic test;- (NSString *)test {     NSString *res;     //do a lot of stuff     return res;}@end這個試驗(yàn)方法在運(yùn)行時(shí)被多次調(diào)用,我正在做大量的工作來計(jì)算結(jié)果。通常,在第一次調(diào)用該方法時(shí),我使用一個合成屬性將該值存儲在一個Ivar_test中,并在下一次返回該值。如何優(yōu)化上述代碼?
查看完整描述

3 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個贊

你只有一個存儲槽。因此,如果您希望在多個實(shí)例上使用此方法,并讓每個實(shí)例計(jì)算一個不同的值,它將無法工作。

幸運(yùn)的是,Object-C運(yùn)行時(shí)有一個名為關(guān)聯(lián)對象完全可以做你想做的事:

#import <objc/runtime.h>static void *MyClassResultKey;@implementation MyClass- (NSString *)test {
  NSString *result = objc_getAssociatedObject(self, &MyClassResultKey);
  if (result == nil) {
    // do a lot of stuff
    result = ...;
    objc_setAssociatedObject(self, &MyClassResultKey, result, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  }
  return result;}@end


查看完整回答
反對 回復(fù) 2019-07-22
  • 3 回答
  • 0 關(guān)注
  • 591 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號