OC之类和对象

从今天开始我的IOS开发算是起步了,第一天学习Objective-C,感觉不是很爽。作为一名Java程序猿的我,第一次使用OC语法什么的都不习惯,尤其是@到处都是,不过,今天看看还是有点儿收获的

今天主要看了OC的对象和类,对象就不提了,Java就是一门面向对象的语言,以前看《Thinking in Java》时就知道,everything is object ,所以这部分就过了。

在Xcode中类的定义和实现是分别保存在两个文件中的,一个是.h文件,一个是.m文件。

.h文件中写的是类的声明部分,包括类的特征和行为的声明(方法声明)。

.m文件中写的是行为的实现(方法的实现)。

类的实现不能放在.h文件中的。

OC中类的定义包含两部分:

    1.接口部分:对外声明类的特征和行为。(也就是对类进行一下说明,类似于说明书)

    2.实现部分:对内实现行为。(内部的具体实现)

接口的部分标志是:

@interface   类名 : NSObject{
    数据类型  实例变量;
    ...
}

- (返回值)对象名;   “-”是对象的方法
+ (返回值)方法名    “+”是类的方法 
@end

如:

@interface Person : NSObject{
//类的特征一定要写在大括号{}内
//在OC中字符串用NSString *
//@public在这里的意思和Java中是差不多一样的,加了之后此处的实例变量能够被访问,此外还有@private和@protected

    @public
    NSString *_name; 
    
    NSInteger _age; 

    NSString *_sex;

}

- (void)sayHi:(NSString *)talkWithYou;

@end

NSObject 是一个基类,几乎所有的类都是继承这个类(需要注意的是在OC中的基类或者根(root)类并不是只有这一个,例如NSProxy也是OC的基类)。

实现部分的标志是:

@implementation  类名

- (返回值)对象名{
   
}

@end

如:

@implementation Person

- (void)sayHi:(NSString *)talkWithYou{
    NSLog(@"%@",talkWithYou);
}

@end

在OC中使用NSLog(); 函数进行输出

在声明和实现写好之后,就要在main.m文件中new个对象了,在main函数中使用以下方法新建一个:

Person *person = [[Person alloc]init];

另外还有一个

Person *Person = [Person new];

这个方法也可以新建一个,[Person new]基本等同于[[Person alloc]init],alloc 在分配内存的时候使用了zone。

不过,new方法并不受推荐,如果使用new的话,初始化方法就被固定死了,只能调用init,alloc则可以用自己的或定制的方法进行初始化。

例如:我们可以定制Person类的初始化

@interface Person : NSObject{
    @public
    NSString *_name; 
}

- (id)init;
//id返回值类型,表示初始化完成的对象。
@end
@implementation Person
- (int)init{

    _name = "鹏伟";
    return self;
}
@end

这样,在Person的_name就初始化为"鹏伟"了。

上面代码里有个self,self是个指针,指向方法的调用者,谁调用就指向谁,代表当前所指对象,可以利用self->成员变量名   访问当前对象内部的实例变量,有点像Java中的this。。。

天也不早了,先写到这里了就,回家啦,明天继续。。。。。。

时间: 2024-10-27 05:18:27

OC之类和对象的相关文章

OC类与对象实例化,类之间的方法调用小题目

两个OC类与对象实例化题目 要求: * 类名.属性名.属性类型.方法名.方法参数.方法返回值自拟 * 自己写main函数测试设计是否合理 /* 1.设计一个"狗"类 1> 属性 * 颜色 * 速度(单位是m/s) * 性别 * 体重(单位是kg) 2> 行为 * 吃:每吃一次,体重增加0.5kg,输出吃完后的体重 * 吠(叫):输出所有的属性 * 跑:每跑一次,体重减少0.5kg,输出速度和跑完后的体重 * 比较颜色:跟别的狗比较颜色,如果一样,返回YES,不一样,返回NO

oc学习之对象作为类的属性

对象做为类的属性 1. 一个Target中的类无法直接在另外1个Target中访问. 2. 类的属性代表什么? a. 类的属性代表这类事物具有的共同的特征 b. 类的属性代表这个类所拥有的东西. 灯: 属性: 形状 功率 价格  品牌 剩余寿命 方法: 照明. 音响: 方法: 发声音. 门: 属性: 尺寸 材料 颜色 价格 方法: 开 关 3. 类的方法代表什么? a. 代表这个类所具备的行为. 这个类所具备的功能. b. 一个类有什么方法 就去分析这个类有什么功能. 4. 属性的本质是变量.

黑马程序员-OC学习日记-对象与方法、对象与函数

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.NSString类简介 1.NSString是OC中用来表示字符串的一个类 2.NSString类创建 (1)通过字面量方式创建 NSString * str = @"要努力学习!"; (2)通过对象方法创建 NSString * str1 = [NSString alloc]; str1 = [str1 initWithUTF8String:"今天雾霾好大!"

Objective-C:OC内部可变对象和不可变对象的深(复制)拷贝问题思考:

OC内部:可变对象和不可变对象的深(复制)拷贝问题思考: 不可变对象: 例如NSString对象,因为NSString对象是常量字符串,所以,不可以更改其内容,但是可以修改指向该字符串的指针指向.当对NSString对象做深拷贝时,如果是copy复制方式,其实就是浅复制,只是复制了同一个对象的指针:如果是mutableCopy复制方式,系统会分配一个新的内存空间用来存放复制出来的NSMutableString对象,此时地址是新的,内容是一样的,他们正在被不同的实例变量字符串指针指着. 可变对象:

oc类和对象

//  main.m //  OC01类和对象 // //  Created by dllo on 15/7/15. //  Copyright (c) 2015年 cml. All rights reserved. // #import <Foundation/Foundation.h> // 先引头文件 #import"Phone.h" #import"Audio car.h" #import"Student.h" int mai

Oc(类和对象)(ClassAndObjict)

main函数 // //  main.m //  2-2 LessonClassAndObject // //  Created by lanouhn on 15/2/2. //  Copyright (c) 2015年 lanouhn. All rights reserved. // //import引用系统的头文件用 <>, 引用自定义类的头文件用 "" #import <Foundation/Foundation.h> #import "Car.

oc中单个对象的内存管理

1.堆:存放的是一些动态分配的对象/类,系统是不会自动回收这些内存的 2.栈:存放的是一些临时的和局部变量,一旦不在作用域内,就会自动回收内存 3.oc中回收堆中动态分配的对象的内存的机制:引用计数器 引用计数器:在每个对象的内存中都有一个4个字节的引用计数器(int),每当对象被创建时,引用计数器的值就是1,当该值为0时,该对象的内存空间就被回收了 调用对象的 retain  方法 会使得计数器数字 +1,同时返回对象本身 调用对象的 release  方法 会使得计数器数值 -1 调用对象的

OC学习16——对象归档

转载自  OC学习篇之---归档和解挡 OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOutputStream来进行操作的.当然在操作的这些对象都是需要实现一个接口:Serializable,同样的OC中操作的对象也是需要实现一个协议的,后面会说到. 一.已有类型的归档和解档 首先来看一个简单的例子: 1 // 2 // main.m 3 // 33_ObjectToFile 4 // 5 // Created by jiangwei on

OC -- 类方法和对象方法

#import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic, retain) NSString *name; @property (nonatomic, assign) int age; - (void)print;       // 对象方法 + (void)introduce;   // 类方法 @end @implementation Person - (void)print{ /