Object-C学习笔记之基础知识一

Object-C 是C的衍生语言,继承了所有C语言的特性,但是Object-C并不是继承自C语言特性本身。

首先我们先通过例子来说明Object-C中的一些基本语法:

#import <Foundation/Foundation.h>

@interface Print: NSObject{    //Objective-c的所有类都继承于NSObject 
    // 成员属性
    NSString * caption;
    NSString * photographer;
}

//在Objective-C 2.0引入了属性合成,相当于之前的get/set方法 
@property(nonatomic, copy) NSString * caption;
@property(nonatomic, copy) NSString * photographer; 

//类方法

+(NSString *)printSize: (NSString *)size;
//实例方法
-(NSString *)printName;
-(NSString *)printName: (NSString *)name;

-(BOOL)print: (NSString *)size setLength: (int)length;

@end

上面代码展示了如何在Object-C声明一个类,其中也涉及到了少许继承:

Object-C声明一个类以@interface 开始,以@end 结束;

Print 为所声明的类,继承自NSObject 类;

//无参实例方法
-(NSString *)printName;
//有参实例方法
-(NSString *)printName: (NSString *)name;
//多参实例方法

-(BOOL)print: (NSString *)size setLength: (int)length;

相当于Java中的:

public static String printSize(String name){
}
public String printName(){
}

public String printName(String name){
}
public Boolean print(String name, int length){
}

首先要把以前学习面向对象语言的惯性思维抛去,在Objective-C里面没有public和private的概念,你可以认为全是public;它只有类方法和实例方法,加号表示类方法,类方法可以直接调用,而不用创建这个类的实例;减号表示实例方法,需要创建这个类的实例对象才可以调用。

(void)和(BOOL)分别为返回值的类型; 
那么BOOL是不是跟Java语言中的Boolean值一样呢,不是的: 
BOOL使用8位存储,YES定义为1,NO定义为0,大于1不为YES,跟标准C不同。 
若不小心将一个长于1字节的整型值赋给BOOL,则只截取低八位 
Obejective-C中1不等于1,绝对不要将BOOL值和YES比较

引用转载自:www.cnblogs.com/moonvan 
/archive/2011/10/13/2210498.html

#import <Foundation/Foundation.h> 

//使用@implementation开始和@end结束实现类的内容
@implementation Print

@synthesize caption;
@synthesize photographer;

+(NSString *)printSize: (NSString *)size{
    ......
}
-(NSString *)printName: (NSString *)name{
    ......
}

@end

之后,就是如何调用的问题了:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]){
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    
    //实例化类的对象 
    Print * pt = [[Print alloc]init];
    
    //方法的使用

    NSString * a = [self printSize: @"20"];
    NSString * b = [pt printName];
    NSString * c = [pt printName: @"Yi_Yuan_n"];
    BOOL d = [pt printName: @"Yi_Yuan_n" setlength: 175];
    
  //属性的使用
    //设置器的调用
    [pt setCaption: @"haha"];
    [pt setPhotographer: @"hehe"];
    //获取器的调用
    NSString * haha = [pt getCaption];
    NSString * hehe = [pt getPhotographer];
    //输出
    NSLog(@"%@", haha);
    NSLog(@"%@", hehe);
    
    [pt release];
    
    [pool drain];
    return 0;
}
时间: 2024-08-25 02:33:09

Object-C学习笔记之基础知识一的相关文章

C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字节的值,该如何在它上面调用方法? 二:值类型转换为引用类型--装箱 2.1CLR对值类型进行装箱时:新分配托管堆内存,将值类型的实例字段拷贝到新分配的内存中,返回托管堆中新分配对象的地址.这个地址就是一个指向对象的引用. int i = 10; Object obj = i; 三:将引用类型转换为值

[Golong]学习笔记(一) 基础知识

Go编程基础 Go的内置关键字(25个) 不多 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continute for import return var Go的注释方法(和js一样) 单行注释: // 多行注释: /**/ Go程序一般结构 common_structure.go 通过 pack

.net学习笔记---xml基础知识

一.XML简介 XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据.XML文档以.xml为后缀.需要彻底注意的是XML是区分大小写的. 先从一个简单的XML例子来了解下xml基础: <?xml version="1.0" encoding="utf-8" ?> <books ISBN="9787544238212"> <title>xml学习笔记</title> <pr

C#学习笔记(基础知识回顾)之枚举

一:枚举的含义 枚举是用户定义的整数类型.在声明一个枚举时,要指定该枚举的示例可以包含的一组可接受的值.还可以给值指定易于记忆的名称.个人理解就是为一组整数值赋予意义. 二:枚举的优势 2.1:枚举可以使代码更易于维护,有助于确保给变量指定合法的.期望的值. 2.2:枚举可以使代码清晰,用描述性的名称来表示整数值,增加代码可读性. 三:枚举的使用 /// <summary> /// 声明一个枚举,审核状态 /// </summary> public enum AduitStatus

[算法学习笔记]算法基础知识

算法基础知识 算法的五大要素 有穷性:算法必须能够在有限个步骤内完成. 确定性:算法的每一步必须有确定的定义. 输入 输出 可行性:算法的每个步骤都必须能分解为基本的可执行操作,每个步骤都必须能在有限时间内完成 循环不变式 循环中的循环不变式可以帮助我们理解算法的正确性.为了证明算法的正确,必须证明循环不变式的三个性质: 1. 初始化:循环不变式在循环开始之前是正确的. 2. 保持:循环不变式在循环的每一次迭代开始之前是正确的. 3. 终止:在循环结束时,不变式会给出一个可以对判断算法是否正确有

《汇编语言》学习笔记1——基础知识

第一章   基础知识 汇编语言的组成 汇编指令:机器码的助记符,有对应的机器码(汇编语言的核心) 伪指令:没有对应的机器码,由编译器执行,计算机并不执行 其他符号:如:+.-.*./等,由编译器识别,没有对应的机器码 指令和数据都是应用上的概念,在内存或磁盘上指令和数据都是二进制信息. 存储器被划分为若干个存储单元,每个存储单元从0开始. 一个存储器有128个存储单元,一个存储单元存储一个字节,一个字节有8个二进制位. 内存换算: 1bit=8byte(B).1KB=1024B.1MB=1024

Scala学习笔记--正则表达式基础知识、如何在scala内使用

正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www.jb51.net/tools/zhengze.html  版本:v2.33 (2013-1-10) 作者:deerchao 转载请注明来源 使用格式:  见java API  http://docs.oracle.com/javase/7/docs/api/ java : java.util.reg

汇编学习笔记---(2)基础知识

今天,接着上次,继续学习汇编语言,主要对内存地址空间.主板.接卡口.存储芯片等进行了解. 什么是内存地址空间? 要搞清楚这个问题,我们首先要知道主板和接口卡. 每个PC都会有一个主板,主板上附有核心器件,包括CPU.存储器.外围芯片组.扩展插槽等,它们通过地址总线+数据总线+控制总线相连. 接口卡啥作用,说白了就是通过总线接收CPU发送的命令,对显示器.音响等外部设备进行控制. 一台PC中主要有两种存储器:随机存储器RAM和只读存储器ROM. RAM中用于存放CPU使用的绝大部分程序和数据,PC

R语言学习笔记:基础知识

1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) 表示把1 - 100的所有数字都给x这个变量 5.查看x的类型:>mode(x) 6.查看x的长度:>length(x) 7.将两个向量组成一个矩阵: >rbind(x1, x2)  注:r是row的意思,即行,按行组成矩阵. >cbind(x1, x2)  注c是column的意思,

python3基础学习笔记(基础知识)-01

python的基础学习: 数据类型:python是弱类型语言,在定义变量的时候,可以不直接制定数据类型. 1.Numbers: int 有符号整型    a = (-1)  a = 1 long 长整型 float 浮点型 complex 复数 2.boolean: True    Flase 3.String :字符串   a = "Hello World" 4.List :列表 有序  list1 = [] 5.Tuple : 元组  定义后不能被修改  a = (1,2,3) 6