当前位置:网站首页>About static type, dynamic type, ID, instancetype
About static type, dynamic type, ID, instancetype
2022-07-06 18:51:00 【InfoQ】
Static type
- When a pointer variable is defined as a specific object , Using static types , The class of this pointer variable is known at compile time , This variable always stores objects of a specific class , By default, all data types are static
@interface Person : NSObject
property (nonatomic,strong) NSString *name;
-(void)run;
@end
@implementation Person
-(void)run{
NSLog(@"run");
}
@end
int main(int argc, const char * argv[]) {
Person *p = [[Person alloc]init];
p.name = @"ABC";
[p run];
return 0;
}
- Characteristics of static data types :
- You know the type of variable at compile time
You know it at compile time p yes Person type
- Know which properties and methods are in the variable
@property (nonatomic,strong) NSString *name;
-(void)run;
- These properties and methods can be accessed at compile time
p.name = @"ABC";
[p run];
- And if you define variables through static data types , If you access properties and methods that are not static data types , Then the compiler will report an error

Dynamic type
- It refers to the class that the program does not determine the object belongs to until it is executed
@interface Person : NSObject
@property (nonatomic,strong) NSString *name;
-(void)run;
@end
@implementation Person
-(void)run{
NSLog(@"run");
}
-(void)test{
NSLog(@"test");
}
@end
@interface Student : Person
@property (nonatomic,assign) int age;
-(void)eat;
@end
@implementation Student
-(void)eat{
NSLog(@"eat");
}
@end
int main(int argc, const char * argv[]) {
id obj1 = [[Person alloc]init];
[obj1 run];
id obj2 = [[Student alloc]init];
[obj2 eat];
return 0;
}
- Characteristics of dynamic data types :
- At compile time, the compiler doesn't know the real type of the variable , The real type of it is known only at run time
id obj1 = [[Person alloc]init];
id obj2 = [[Student alloc]init];
id
The type and
instancetype
idtype
idIs a common object type , It can point to objects belonging to any class , It can be understood as a universal pointer , amount to C Linguisticvoid*data type ,idIt is also a dynamic data type , Can be used to define variables , As a function parameter , Return value as a function, etc
id == NSObject*( Universal pointer )
NSObject*It's a static type
- Because dynamic data types can call any method , So it's possible to call methods that don't belong to you , And no error is reported during compilation , So it leads to runtime errors
- Use scenarios : polymorphic , Can reduce the amount of code , To avoid calling subclass specific methods, you need to force type conversion
- id Type cannot use point syntax , Because point syntax is a feature of the compiler , and id Types are runtime characteristics
- Try to use static types , Static types can detect errors earlier , Improve readability
instancetype
instancetypeThe true type of the object can be determined at compile time
instancetypeCan only be used for return values
- Custom construction method , Use the return value as much as possible
instancetype, Do not useid
边栏推荐
- Installation and management procedures
- AFNetworking框架_上传文件或图像server
- Summary of performance knowledge points
- Shangsilicon Valley JUC high concurrency programming learning notes (3) multi thread lock
- Self-supervised Heterogeneous Graph Neural Network with Co-contrastive Learning 论文阅读
- C language college laboratory reservation registration system
- CSRF漏洞分析
- Celery best practices
- Penetration test information collection - basic enterprise information
- Tree-LSTM的一些理解以及DGL代码实现
猜你喜欢

涂鸦智能在香港双重主板上市:市值112亿港元 年营收3亿美元

关于npm install 报错问题 error 1

On AAE

Easy to use PDF to SVG program

Hongke shares | plate by plate ar application in Beijing Winter Olympics

None of the strongest kings in the monitoring industry!

【论文笔记】TransUNet: Transformers Make StrongEncoders for Medical Image Segmentation

10、 Process management

Blue Bridge Cup real question: one question with clear code, master three codes

使用cpolar建立一个商业网站(1)
随机推荐
Cocos2d Lua 越来越小样本 内存游戏
Solve DoS attack production cases
二叉搜索树
上海部分招工市場對新冠陽性康複者拒絕招錄
Xu Xiang's wife Ying Ying responded to the "stock review": she wrote it!
Penetration test information collection - WAF identification
RedisSystemException:WRONGTYPE Operation against a key holding the wrong kind of value
[depth first search] Ji suanke: a joke of replacement
用友OA漏洞学习——NCFindWeb 目录遍历漏洞
A wearable arm device for night and sleeveless blood pressure measurement [translation]
图片缩放中心
Online notes
Specify flume introduction, installation and configuration
涂鸦智能在香港双重主板上市:市值112亿港元 年营收3亿美元
Optical blood pressure estimation based on PPG and FFT neural network [translation]
celery最佳实践
Mathematics in machine learning -- common probability distribution (XIII): Logistic Distribution
Celery best practices
美庐生物IPO被终止:年营收3.85亿 陈林为实控人
AvL树的实现