黑马程序员——Object-C的基础学习——语言特性

本文对比了Objective-C与C++的特点,介绍了Objective-C的基础语法、Cocoa框架组成及Objective-C与C语言的关系。通过一个具体的例子展示了两种语言在实现相同功能时的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lt;a target=_blank href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

初衷:
      生平第一次写技术博客,真有点无所适从。关于Object-C,目前正打算开始学习,博客的写作,也权当日常的学习笔记,希望在不断的积累过程中提高自己。在博客这个平台上,也让自己不忘自己对于技术的初衷——Mide Wide Open。


tag1:Object-C和C(Objective-C的内核是C语言的,并基于C语言实现OOP的一些特性。Objective-C是对C语言的扩展)

与Object-C相比:

1.C是面向过程,Object是面向对象的;

2.数组、函数、指针、结构、联合的用法和 C 一样;

3.循环语句(do while、while、for)、条件语句( if 语句(if-else、复合判断条件等)、switch 语句 )、
Boolean(YES NO)、条件运算符、goto 语句、空语句、逗号表达式、sizeof 运算符、命令行参数、位操作都
和 C 一样;

4.BOOL使用8位存储,YES定义为1,NO定义为0,大于1不为YES,跟标准C不同。 若不小心将一个长于1字节的整型值赋给BOOL,则只截取低八位
Obejective-C中1不等于1,绝对不要将BOOL值和YES比较 。



tag2:Cocoa

Cocoa组成部分有:(1)Foundation框架(有很多有用的,面向数据的低级类和数据结构);(2)Application Kit(也称AppKit)框架(包含了所有的用户接口对象和高级类,例如NS……)(3)还有一个支持框架的套件,包括Core Animation和Core Image。 


tag3.Objective-C常见语法说明:

1 头文件引用使用 #import “文件名”或者 #import <文件名>的形式以确保每个头文件仅被包含一次; 
2 类声明以 @interface 类名:继承类 开头,以 @end 结尾,类实现以@implementation 类名 开头,以 @end 结尾; 
3 实例方法,即成员方法,在方法名前面添加一个减号(-);类方法,在方法名前面添加一个加号(+); 
4 类方法的调用格式为 [类名 类方法],成员方法调用格式为 [实例名 实例方 法],这种模式在ObjC中被称为消息机制,[对象 消息]即给对象发送了一个消息,产生的 效果就是该对象调用了该类中定义的对应的实例方法。


tag4.下面通过一个例子比较一下OC和C++

---------------------------------------------------------------------------------------------------------------------------------

Object-C:

#import <Foundation/Foundation.h> 
@interface Student : NSObject

{     //Objective-c的所有类都继承于NSObject 

     // 成员属性 
     NSString *name; 
     NSString *number; 



//在Objective-C 2.0引入了属性合成,相当于之前的get/set方法 

@property (nonatomic, copy) NSString *name; 

@property (nonatomic, copy) NSString *number; 

    // 类方法 

+ (NSString*)printName; 

@end 



Print类.m文件(实现文件) 
#import "Print.h" 
@implementation Student
@synthesize name; 
@synthesize number; 


// 类方法 
+ (NSString*)printName 



    return (@"MikyLin'sBlog"); 


@end 


Print 类使用 
#import "Print.h" 
int main(int argc, const char *argv[]) 


    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    return NSApplicationMain(argc, (const char **)argv); 

    // 类方法调用 

    NSLog(@"PrintName = /"%@/"", [Student printName]); 

    // 初始化 

    Student* student1 = [Student alloc] init]; 

    // 设置器调用 

    [student1 setName:@"MikyLin"]; 

    [Student1 setNumber:@"001"]; 

    // 获取器调用 

    NSLog(@"Name = /"%@/"", [student1 name]); 

    NSLog(@"Number = /"%@/"", [student1 number]); 

    [pool drain]; 



    return 0; 



运行结果:

ClassName = "MikyLin'sBlog" 

Name=MikyLin

Number=001

--------------------------------------------------------------------------------------------------------------------------------

C++:

#include<iostream>
using namespace std;
class  Student
{
        String name;
        String  number;
public:
        Student(String a,String b);

        String printName();
       
}

Student::Student(String a,String b)
{
     name=a;
     number=b;
}
String Student::printName()
{
   return "MikyLin'sBlog";
}

void main()
{
String temp1,temp2;
temp1=Miky;

temp2="001"
Student  student1(temp1,temp2);

printf("ClassName=%s\n",student1.printName() );    

printf("Name=%s\n",student1.name);

printf("Number=%s\n",student1.number);
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值