ios 擷取與修改類私人屬性與執行個體變數,ios執行個體

來源:互聯網
上載者:User

ios 擷取與修改類私人屬性與執行個體變數,ios執行個體
1 #import "Cat.h" 2 3 @interface Cat () 4 5 @property (nonatomic, copy) NSString *name; 6 7 @end 8 9 @implementation Cat{10 int age;11 }12 13 -(instancetype)initWithName:(NSString *)string{14 self = [super init];15 if (self) {16 _name = string;17 age = 1;18 }19 return self;20 }21 22 @endCat

        Cat *cat = [[Cat alloc]initWithName:@"大懶貓"];                NSLog(@"第一種,通過kvc擷取與修改屬性以及執行個體變數age\n\n");        //第一種,通過kvc擷取與修改屬性以及執行個體變數age        NSString *cat_name = [cat valueForKey:@"name"];        [cat setValue:@"大花貓" forKey:@"name"];        NSString *cat_name_modified = [cat valueForKey:@"_name"];//key值為name與_name都可以,因為程式運行時會去類中找,先找同名的,再找帶有底線_的,找不到就報錯。        NSLog(@"name修改前:%@, 修改後:%@",cat_name,cat_name_modified);        //列印結果:name修改前:大懶貓, 修改後:大花貓                int age = [[cat valueForKey:@"age"]intValue];        [cat setValue:@2 forKey:@"age"];        int age_mod = [[cat valueForKey:@"age"]intValue];        NSLog(@"age修改前:%d, 修改後:%d",age,age_mod);        //列印結果:age修改前:1, 修改後:2                NSLog(@"\n\n第二種,通過runtime擷取與修改屬性\n\n");                //第二種,通過runtime擷取與修改屬性        Ivar m_name = class_getInstanceVariable([Cat class], "_name");        cat_name = (NSString *)object_getIvar(cat, m_name);        NSLog(@"name修改前:%@",cat_name);        //列印結果:name修改前:大花貓                object_setIvar(cat, m_name, @"大臉貓");        cat_name = (NSString *)object_getIvar(cat, m_name);        NSLog(@"name修改:%@",cat_name);        //列印結果:name修改:大臉貓

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.