objective-C五大特性:
- 完全兼容C
- 面向对象
- 单继承(OC里的函数均为虚函数、通过类别和协议实现伪多继承)
- 动态绑定(dynamic_cast 把基类指针转化为子类指针的时候会自动做判断、ID类型 表示任意类型的对象,实现动态绑定)
- 消息机制(SmallTalk语言 解决空指针错误崩溃)
#import <Foundation/Foundation.h> //:表示公有继承 @interface Person : NSObject { //属性,实例变量,默认权限为protected int age; //对象声明时必须使用* NSString * name; } //生成set和get方法 @property (nonatomic,assign) int age; // - 表示实例的方法(消息),+ 表示类的方法(消息)static - (void)eat;- (void)setName:(NSString *)nameValue;
@end
#import "Person.h" @implementation Person @synthesize age; - (void)eat { NSLog(@"eat function called"); } - (void)setName:(NSString *)nameValue { if (nameValue) { //指针不能直接赋值,否则释放时会出现问题 if (name != nameValue) { name = nil; name = [NSString stringWithString:nameValue]; } } } @end
#import "Person.h" #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //alloc为+方法,init为-方法 Person * p = [[Person alloc]init]; [p eat]; //oc字符串必须以@开头 [p setName:@"yangjing"]; } return 0; }
时间: 2024-10-12 12:04:07