欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

runtime如何在IOS中使用-創(chuàng)新互聯(lián)

這期內(nèi)容當中小編將會給大家?guī)碛嘘Pruntime如何在IOS 中使用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)是一家專業(yè)提供平潭企業(yè)網(wǎng)站建設,專注與做網(wǎng)站、網(wǎng)站制作、HTML5、小程序制作等業(yè)務。10年已為平潭眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設計公司優(yōu)惠進行中。

新建兩個類ClassOne和ClassTwo

#import <Foundation/Foundation.h>

@interface ClassOne : NSObject{
  NSString *_publicVar1;
  NSString *_publicVar2;
}

@property(nonatomic,copy) NSString *publicProperty1;
@property(nonatomic,copy) NSString *publicProperty2;

- (void) testClassOneWithArg1:(NSString *)arg1;
@end


#import "ClassOne.h"

@interface ClassOne()
@property(nonatomic,copy) NSString *privateProperty1;
@property(nonatomic,copy) NSString *privateProperty2;

@end

@implementation ClassOne{
    NSString *_privateVar1;
    NSString *_privateVar2;
}

- (void)testClassOneWithArg1:(NSString *)arg1{
  NSLog(@"this is CalssOne, arg1:%@",arg1);
}

- (void)testClassOneWithArg1:(NSString *)arg1 arg2:arg2{
  NSLog(@"this is CalssOne, arg1:%@ arg2:%@",arg1,arg2);
}
@end
#import <Foundation/Foundation.h>

@interface ClassTwo : NSObject
- (void) testClassTwoWithArg1:(NSString *)arg1 arg2:(NSString *)arg2;
@end


#import "ClassTwo.h"

@implementation ClassTwo
- (void)testClassTwoWithArg1:(NSString *)arg1 arg2:(NSString *)arg2{
  NSLog(@"this is ClassTwo arg1:%@,arg2:%@",arg1,arg2);
}
@end

1.拷貝對象

ClassOne *one = [ClassOne new];
id onec1 = object_copy(one,sizeof(one));

2.給類添加方法

ClassOne *one = [ClassOne new];
class_addMethod([ClassOne class], @selector(testClassOneWithArg1:arg2:arg3:), (IMP)testClassOne , "i@:@@@");
[one testClassOneWithArg1:@"arg1" arg2:@"arg2" arg3:@"arg3"];

//方法對應的C函數(shù)
int testClassOne(id self,SEL _cmd, NSString *arg1,NSString *arg2,NSString *arg3){
NSLog(@"this is a test function add to ClassOne as a methad with arg1:%@ arg2:%@ and arg3:%@",arg1,arg2,arg3);
  return 10;
}

3.添加屬性(方式一)

//屬性類型
objc_property_attribute_t type = { "T", "@\"NSString\"" };
//訪問類型
objc_property_attribute_t ownership = { "C", "" };
//對應成員變量名稱
objc_property_attribute_t backingivar = { "V", "_testPropertyName" };
objc_property_attribute_t attrs[] = { type, ownership, backingivar };
class_addProperty([ClassOne class], "testPropertyName", attrs, 3);
class_addMethod([ClassOne class], @selector(testPropertyName), (IMP)testPropertyNameGetter , "@:@@");
class_addMethod([ClassOne class], @selector(setTestPropertyName:), (IMP)testPropertyNameSetter, "v:@@@");


//屬性對應的Getter方法
NSString* testPropertyNameGetter(id self,SEL _cmd){
  Ivar ivar = class_getInstanceVariable([ClassOne class], "_testPropertyName");
  return object_getIvar(self, ivar);
}

//屬性對應的Setter方法
void testPropertyNameSetter(id self,SEL _cmd,NSString *testPropertyNameValue){
  Ivar ivar = class_getInstanceVariable([ClassOne class], "_testPropertyName");
  object_setIvar(self, ivar, testPropertyNameValue);
}

4.添加屬性(方式2)

ClassOne *one = [ClassOne new];
objc_setAssociatedObject(one, "objTag", @"value", OBJC_ASSOCIATION_COPY);
NSString *value = objc_getAssociatedObject(one, "objTag");
NSLog(@"通過Associate設置:%@",value);

5.獲取類的名稱

ClassOne *one = [ClassOne new];
const char *className = object_getClassName(one);
NSLog(@"className:%@",[NSString stringWithUTF8String:className]);

6.獲取一個類的所有方法

UInt count;
Method *methods = class_copyMethodList([ClassOne class], &count);
for (int i = 0; i < count; i++) {
  Method method = methods[i];
  SEL sel = method_getName(method);
  NSLog(@"方法名:%@",NSStringFromSelector(sel));
}

7.獲取一個類的所有屬性

uint propertyCount;
objc_property_t *ps = class_copyPropertyList([ClassOne class], &propertyCount);
for (uint i = 0; i < propertyCount; i++) {
  objc_property_t property = ps[i];
  const char *propertyName = property_getName(property);
  const char *propertyAttributes = property_getAttributes(property);
  NSLog(@"propertyName:%@",[NSString stringWithUTF8String:propertyName]);
  NSLog(@"propertyAttributes:%@",[NSString stringWithUTF8String:propertyAttributes]);
}

8.獲取類的所有成員變量

uint ivarCount;
Ivar *ivars = class_copyIvarList([ClassOne class], &ivarCount);
for (uint i = 0; i < ivarCount; i++) {
  Ivar ivar = ivars[i];
  const char *ivarName = ivar_getName(ivar);
  NSLog(@"ivarName:%@",[NSString stringWithUTF8String:ivarName]);
}

9.獲得成員變量類型

uint ivarCount;
Ivar *ivars = class_copyIvarList([ClassOne class], &ivarCount);
for (uint i = 0; i < ivarCount; i++) {
  Ivar ivar = ivars[i];
  const char *ivarName = ivar_getName(ivar);
  const char *type = ivar_getTypeEncoding(ivar);
  NSLog(@"ivarName=%@,type=%@",[NSString stringWithUTF8String:ivarName],[NSString stringWithUTF8String:type]);
}

上述就是小編為大家分享的runtime如何在IOS 中使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)網(wǎng)站建設公司行業(yè)資訊頻道。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站aaarwkj.com,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文題目:runtime如何在IOS中使用-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://aaarwkj.com/article36/ccjdsg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)手機網(wǎng)站建設、企業(yè)建站、全網(wǎng)營銷推廣、網(wǎng)站收錄、網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
婷婷激情五月国产丝袜| 亚洲精品一区二区播放| 欧美日韩国产在线91| 中文字幕日韩精品国产| 黄片无毛欧美在线观看| 久久国产精品一区二区三区| 欧美亚洲精品在线观看| 色哟哟精品丝袜一区二区| 日韩午夜免费一区二区蜜桃| 亚洲综合av伊人久久| 青青草成人免费在线公开视频| 国产乱码精品一区二区三区爽爽爽 | 亚洲综合香蕉在线视频| 亚洲av网站一区二区三区| 日韩免费高清不卡视频| 国产精品国产精品国产| 亚洲国产综合亚洲综合国产| 亚洲成综合人在线播放| 99热精品综合在线观看| 韩国专区福利一区二区| av影片在线观看不卡| 日韩高清一级黄色大片网站| 超碰97免费在线观看| 欧美高清一区二区三区不卡| 日本色电影一区二区三区| 四虎永久播放地址免费| av国产剧情在线观看| 日韩性视频激情在线一区| 亚洲精品不卡在线观看| 国产自偷一区二区三区| 亚洲国产精品中文字幕一区久久 | 亚洲精品麻豆一区二区| 国产精品国产亚洲精品| 中文字幕变态另类一区二区| 精品女同一区二区三区久久 | 年轻的少妇一区二区三区| 国产免费成人黄视频网站| 97视频精品免费观看| 精品亚洲综合一区二区| 日韩美女av在线播放| 天堂av好男人亚洲精品|