Objective-C是苹果公司广泛用于iOS和macOS应用开发的一种编程语言,它基于C语言并加入了面向对象的特性。本文将深入探讨Objective-C中的面向对象编程,特别是类的定义、方法的实现、对象的创建与销毁等方面的内容。
Objective-C可以用于开发苹果家族系列产品的软件,本文记录了一些关键知识点,便于日后复习和参考:
面向对象程序设计(Object-OrientedProgramming,OOP)是一种程序设计范式,它将程序中的数据和操作数据的方法封装在一起,形成一个独立的实体——对象。这种设计方法有助于提高软件的复用性、灵活性和可维护性。
面向过程的编程方式侧重于解决问题的步骤,通过函数实现这些步骤,使用时按顺序调用;而面向对象则将问题分解为多个对象,每个对象负责描述事物在解决问题过程中的行为。
在面向对象编程中,对象是类的实例,类是对象的模板,方法则是类中定义的功能。类中可以包含属性和方法,分别用于存储数据和实现功能。
1.OC类的结构
@interfaceMyClass:NSObject-(void)setName:(NSString*)nameage:(int)age;@end2.实现类
类的实现以@implementation开始,以@end结束,中间包含方法的具体实现。例如:
#import"MyClass.h"@implementationMyClass-(void)setName:(NSString*)nameage:(int)age{//方法实现}@end六、实例化对象在Objective-C中,可以通过alloc和init方法创建对象。例如:
#import#import"MyClass.h"intmain(intargc,constchar*argv[]){@autoreleasepool{MyClass*obj=[[MyClassalloc]init];}return0;}此外,还可以使用new方法简化对象的创建过程:
MyClass*obj=[MyClassnew];七、释放对象(销毁对象)在Xcode4.2之前,需要手动释放对象,使用[objrelease]。但在Xcode4.2之后,默认启用了ARC(AutomaticReferenceCounting),系统会自动管理对象的生命周期。
Objective-C中的构造方法通常以init开头,例如:
-(id)initWithName:(NSString*)nameage:(int)age{self=[superinit];if(self){_name=name;_age=age;}returnself;}九、便利构造器便利构造器通常用于简化对象的创建过程,并自动管理内存。例如:
+(instancetype)myClassWithName:(NSString*)nameage:(int)age{return[[selfalloc]initWithName:nameage:age];}十、单例模式单例模式确保一个类只有一个实例,并提供一个全局访问点。例如:
+(instancetype)sharedInstance{staticMyClass*instance=nil;staticdispatch_once_tonceToken;dispatch_once(&onceToken,^{instance=[[selfalloc]init];});returninstance;}十一、Self关键字Self关键字在Objective-C中代表当前方法的调用者。在实例方法中,self代表当前对象;在类方法中,self代表当前类。
1.空指针:值为NULL或nil的指针。
2.野指针:指向无效内存地址的指针。
@interfaceMyClass:NSObject@property(nonatomic,strong)NSString*name;@end@implementationMyClass@synthesizename=_name;@end通过@property和@synthesize,可以方便地管理对象的属性,同时提供了多种选项来控制属性的行为,如atomic、nonatomic、strong、weak等。