We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Type Encoding 主要用于对方法的返回值,参数进行编码,在Runtime 中SEL只是一个方法名的标记,它不包含方法所属类的信息以及参数返回值信息。而方法参数及返回值信息是通过Type Encoding编码生成的,这个可以看下我的博客《iOS Runtime应用之Runtime API分类》
我举了一个例子:
+ (IDLReturnType *)testTypeEncoding:(NSString *)strValue intValue:(NSInteger)intValue { return [IDLReturnType new]; }
这里每个部分都包含两位,前面一个表示编码,后面表示这个数据对应的偏移量,返回的类型数据会将返回值放在最后面,所以****@32@0:8@16q24****对应部分的意义如下:
还有一个是属性编码,包含了属性定义时候的一系列信息,它也是一个字符串,以逗号分割各个部分。比如:
@property(nonatomic, copy, readonly,getter=ageValue,setter=setAageValue:) NSString *age;
的属性编码如下所示:
****T@"NSString",R,C,N,GageValue,SsetAageValue:,V_age****
它各个部分的意思如下所示:
* T@"NSString" 属性类型为NSString * R 属性类型为ReadOnly类型 * C 属性存储属性为Copy * N 属性为nonatomic * GageValue 属性指定getter方法为ageValue * SsetAageValue: 属性指定setter方法为setAageValue: * V_age 属性对应的实例变量为_age
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Type Encoding 主要用于对方法的返回值,参数进行编码,在Runtime 中SEL只是一个方法名的标记,它不包含方法所属类的信息以及参数返回值信息。而方法参数及返回值信息是通过Type Encoding编码生成的,这个可以看下我的博客《iOS Runtime应用之Runtime API分类》
我举了一个例子:
这里每个部分都包含两位,前面一个表示编码,后面表示这个数据对应的偏移量,返回的类型数据会将返回值放在最后面,所以****@32@0:8@16q24****对应部分的意义如下:
还有一个是属性编码,包含了属性定义时候的一系列信息,它也是一个字符串,以逗号分割各个部分。比如:
@property(nonatomic, copy, readonly,getter=ageValue,setter=setAageValue:) NSString *age;
的属性编码如下所示:
****T@"NSString",R,C,N,GageValue,SsetAageValue:,V_age****
它各个部分的意思如下所示:
The text was updated successfully, but these errors were encountered: